gops

Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-06-17
Scope: RISC-V (riscv64/linux) support status for gops
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].


1. Project Overview

gops is a command-line tool for listing and diagnosing Go processes running on a system. It attaches to a running Go binary via a TCP agent (injected by importing github.com/google/gops/agent) and exposes runtime diagnostics: goroutine stacks, heap profiles, CPU profiles, GC stats, and Go version detection. It is used for ad-hoc process inspection, not production observability infrastructure.

The project is hosted under the google GitHub organization. It has no MAINTAINERS, OWNERS, or CODEOWNERS file. Governance is informal. The original author is Jaana Dogan (rakyll, Google) who created the project in November 2016 and was its primary contributor through approximately 2019. The de facto current maintainer is Tobias Klauser (tklauser, Cilium/Isovalent), who has handled CI, dependency updates, bug fixes, and Go version compatibility from approximately 2020 onward. There is no foundation affiliation and no RISE Project membership.

The project is not in the project-reports/scope.yml tracking list for this repository. No RISE blog post, RISE webinar transcript, or RISE wheel-builder listing references gops.

License: BSD-3-Clause.

Community stance on new ports: not applicable. gops has no architecture-specific code at any level; it does not require porting. Any platform that the Go toolchain supports (including linux/riscv64) builds gops without changes.


2. Port History and Upstreaming Timeline

Date Event Source
Nov 2016 Project created by Jaana Dogan (Google) github.com/google/gops initial commit
2021 Dependency update for windows/arm64 (gopsutil + go-ole) Commit e9831286 [NEEDS VERIFICATION - single source]
Jan 2026 v0.3.29 released (latest as of research date) github.com/google/gops/releases/tag/v0.3.29

No RISC-V-specific commit, issue, or PR exists in the repository. A complete search of all 272 issues, 260+ PRs, and commit history returned zero riscv/riscv64 results. No porting work was required or performed; riscv64 support was inherited from the Go toolchain without any changes to gops itself.


3. Upstream Support Tier

No formal platform tier or support matrix is documented. There is no PLATFORMS.md, SUPPORT.md, or equivalent. The implicit policy is: if Go supports the platform, gops supports the platform.

Dimension amd64 arm64 riscv64
Builds from source Yes Yes Yes
CI coverage Yes (ubuntu-latest) Partial (macos-latest, which is arm64) No
Official pre-built binary No No No
Distribution packages No No No
Release artifact Source tag only Source tag only Source tag only

The project ships no pre-built binaries for any architecture. All GitHub releases (v0.3.25 through v0.3.29) have "assets": [] - empty asset lists confirmed via the GitHub releases API. The absence of riscv64 binaries is not a RISC-V-specific gap; it reflects the project’s source-only release policy.


4. Technical Architecture and RISC-V-Specific Subsystems

gops has 28 Go source files and no architecture-specific code of any kind. There is no assembly, no JIT backend, no SIMD dispatch, no crypto primitive implementation, no GC barrier code, and no ISA-specific build tags in the gops codebase itself.

Component Description amd64 arm64 riscv64
Process enumeration (goprocess/) Uses debug/buildinfo.ReadFile() (Go 1.18+) to read ELF/Mach-O/PE generically Full Full Full
Agent networking (agent/) TCP socket with SO_REUSEPORT via golang.org/x/sys/unix; build tag !js && !plan9 && !solaris && !windows includes linux/riscv64 Full Full Full
Process statistics Delegated to github.com/shirou/gopsutil/v3; uses generic _linux.go path on all Linux architectures Full Full Full
Pre-Go-1.18 version detection rsc.io/goversion contains an amd64Matcher assembly scanner with no riscv64 equivalent Full Partial [NEEDS VERIFICATION] Gap (moot)

The pre-1.18 gap in rsc.io/goversion is not actionable: gops declares go 1.18 in its go.mod, making the legacy code path unreachable on any architecture under the current build requirements.

No ISA extensions (RVV, Zba, Zbb, Zbc, Vector Crypto) are used or relevant. gops performs no numeric computation, no cryptographic operations, and no memory-bandwidth-sensitive work.


5. Build System, Cross-Compilation, and Toolchain

gops uses the standard Go module build system. There is no CMake, no Meson, no Bazel, no Makefile, no Dockerfile, and no configure script in the repository.

Build commands for riscv64:

# Cross-compile from any host
GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build github.com/google/gops

# Or install directly on a riscv64 host
go install github.com/google/gops@latest

Required Go version: 1.18 minimum (declared in go.mod). Go has supported linux/riscv64 since Go 1.14. All Go versions that satisfy the gops minimum (1.18+) include riscv64 Linux support.

CGO: Not required. The key dependency github.com/shirou/gopsutil/v3 explicitly tests GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 in its CI lint matrix, confirming CGO-free cross-compilation works end to end.

QEMU: Not required for the build. QEMU would only be needed to execute riscv64 test binaries on non-riscv64 hardware; no CI or documented workflow uses it.

Known build failures: None. No build failure reports exist for any platform in the gops issue tracker.


6. Feature Coverage and Gap Analysis vs arm64 and amd64

Feature amd64 arm64 riscv64
List running Go processes Full Full Full
Attach agent and query stats Full Full Full
Heap/CPU profile collection Full Full Full
Goroutine stack dump Full Full Full
Go version detection (Go 1.18+ binaries) Full Full Full
Go version detection (pre-Go-1.18 binaries) Full Partial [NEEDS VERIFICATION] Gap

The riscv64 gap in pre-Go-1.18 binary version detection is an inherited limitation from rsc.io/goversion (which only ships an amd64Matcher). In practice this is irrelevant: no production environment should be running Go binaries older than 1.18 in 2026, and gops itself requires Go 1.18 to build.

No functional gaps exist for the primary use cases on linux/riscv64. No floating-point semantics issues, NaN-handling bugs, or correctness regressions have been reported. Data not available: independent validation of process inspection correctness on actual riscv64 hardware.


7. CI/CD Infrastructure

The single CI file is .github/workflows/test.yml. Its runner matrix covers exactly:

  • ubuntu-latest (x86_64)
  • macos-latest (arm64 or x86_64 depending on GitHub runner pool)
  • windows-latest (x86_64)

Go versions tested: 1.18, 1.22, 1.23. The job runs go test -race -v ./... natively on each host. There is no GOARCH=riscv64 cross-compilation step, no QEMU emulation, no Docker-based cross-arch runner, and no self-hosted riscv64 runner anywhere in the file. The word “riscv” does not appear in the CI file.

CI dimension amd64 arm64 riscv64
Native runner Yes (ubuntu-latest) Yes (macos-latest) No
Cross-compile check No No No
Race detector test Yes Yes No
QEMU emulation test No No No
RISE CI runner No No No

No RISE CI infrastructure is involved with this project.


8. Distribution and Release Status

Pre-built binaries: None. All releases from v0.3.25 through v0.3.29 have zero uploaded assets (confirmed via GitHub releases API: "assets": []). This is universal, not riscv64-specific.

Package manager presence:

Channel riscv64 status Notes
GitHub Releases Not available No binaries for any arch
PyPI Not applicable Not a Python package
Debian Not packaged tracker.debian.org/pkg/gops returns HTTP 404
Ubuntu Noble Not packaged Only golang-github-shirou-gopsutil-dev (different project) found
Arch Linux (x86_64) Not packaged Only gopsuinfo (different project) found
Arch Linux RISC-V (archriscv.felixc.at) Not packaged No result
RISE wheel builder Not tracked Not a Python wheel

To obtain a working riscv64 binary:

go install github.com/google/gops@latest

This is the only supported path. It works on any Go-supported platform including linux/riscv64 with no flags or workarounds.


9. Dependencies

Dependency Version Role riscv64 Build riscv64 Test riscv64 Release Blocking Issues
Go toolchain >= 1.18 Compiler, runtime, standard library Full (since Go 1.14) Native hardware CI exists (RVA22 bots) All Go 1.18+ releases Two CI bots broken as of April 2026 (issues #79068, #79069); no build blocker
golang.org/x/sys v0.30.0 OS syscalls, socket options Full - 19 riscv64-specific files in unix package No riscv64 CI runner Ships in x/sys releases None  
github.com/shirou/gopsutil/v3 v3.24.5 Process/CPU/memory/disk stats Full on Linux (generic _linux.go paths) No riscv64-native CI; CI lint matrix includes GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 Ships in gopsutil releases FreeBSD/riscv64 only: issue #1425 (open since 2023-03-02, unmerged fix in PR #1652); Linux unaffected  
github.com/spf13/cobra v1.9.1 CLI argument parsing Full (pure Go) Platform-agnostic Ships regularly None  
github.com/xlab/treeprint v1.2.0 ASCII tree output Full (pure Go) Platform-agnostic Stable None  
rsc.io/goversion v1.2.0 Go version detection in binaries Full for Go 1.18+ binaries; amd64-only assembly scanner for pre-1.18 (unreachable) Platform-agnostic for current code path Stable None  
github.com/tklauser/go-sysconf v0.3.12 (indirect) sysconf() wrapper Full via x/sys No riscv64 CI Transparent None  
github.com/tklauser/numcpus v0.6.1 (indirect) CPU count helper Full (pure Go + x/sys) Platform-agnostic Transparent None  
github.com/go-ole/go-ole v1.2.6 (indirect) Windows COM Not used on Linux/riscv64 N/A N/A N/A  
github.com/shoenig/go-m1cpu v0.1.6 (indirect) Apple M1 CPU detection Not used on Linux/riscv64 N/A N/A N/A  
github.com/lufia/plan9stats (indirect) Plan 9/BSD stats Not used on Linux N/A N/A N/A  
github.com/power-devops/perfstat (indirect) AIX perfstat Not used on Linux N/A N/A N/A  
github.com/yusufpapurcu/wmi (indirect) Windows WMI Not used on Linux N/A N/A N/A  

The one open RISC-V issue in the dependency tree is gopsutil#1425, which affects disk stats on FreeBSD/riscv64 only. Linux deployments are unaffected.


11. Known Bugs and Active Issues

ID Title Status Severity Notes
shirou/gopsutil#1425 Missing support for riscv64 FreeBSD Open (since 2023-03-02) Low FreeBSD only; compile-time failure for disk stats. Fix proposed in unmerged PR #1652. Does not affect Linux/riscv64.
golang/go #79068, #79069 linux-riscv64-rva22u64-mengzhuo bots broken Open (April 2026) Medium (Go CI infra) Affects Go toolchain CI, not gops directly. Go builds for riscv64 remain available.

No correctness bugs, no riscv64-specific crashes, and no behavioral regressions have been reported for gops on any platform.


12. Objections and Upstream Blockers

None. Because gops contains no architecture-specific code, there are no porting objections to overcome, no technical blockers, and no organizational resistance. The project maintainer (Tobias Klauser) has a track record of accepting cross-architecture improvements given his background with Cilium’s Linux kernel work. If a riscv64 CI runner were contributed, acceptance probability is high [NEEDS VERIFICATION - based on maintainer profile inference, not a stated position].

The only upstream gap that could affect gops is the unmerged gopsutil PR #1652 for FreeBSD/riscv64 disk stats, which is not a gops-level issue and does not affect Linux.


13. Investment Analysis

RISE has not funded or tracked any work on gops. No RISE blog post, webinar transcript, or project listing references gops. All investment sizing below starts from zero.

13.1 Functional Enablement

No work required. gops builds and runs on linux/riscv64 today with go install github.com/google/gops@latest. There are no functional gaps on Linux.

13.2 Performance Optimization

Not applicable. gops is a diagnostic CLI tool that runs transiently. It performs no computation-intensive work (no numeric kernels, no cryptography, no SIMD-amenable loops). Performance optimization of gops itself has no meaningful impact on any workload.

13.3 CI/CD Infrastructure

The highest-value contribution is adding riscv64 to the CI matrix. This would provide early detection of any future regressions as Go toolchain and dependency versions change. The change is a single-file edit to .github/workflows/test.yml adding a linux/riscv64 cross-compile step with QEMU execution, or a self-hosted riscv64 runner entry. Effort is low; the primary dependency is access to a suitable runner.

13.4 Ecosystem Enablement

Not applicable. gops is a standalone CLI tool with no dependent package ecosystem.

13.5 Summary Table

Area Work Item Effort (person-weeks) Owner Priority
CI/CD Add GOARCH=riscv64 cross-compile + QEMU test step to .github/workflows/test.yml 0.5 Contributor to google/gops Low
Upstream dep Review and help land gopsutil PR #1652 (FreeBSD/riscv64 disk stats) 0.5 Contributor to shirou/gopsutil Low

Total estimated investment: 1 person-week. Neither item is blocking for Linux/riscv64 deployments. The CI addition is the only item that provides ongoing regression protection. Both items are nice-to-have, not critical.


14. Updates

No updates yet – initial report dated 2026-06-17.


15. References