{"id":19132769,"url":"https://github.com/parca-dev/runtime-data","last_synced_at":"2026-01-25T19:07:57.507Z","repository":{"id":194355400,"uuid":"663086051","full_name":"parca-dev/runtime-data","owner":"parca-dev","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-19T13:10:10.000Z","size":3246,"stargazers_count":2,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-01T21:49:19.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parca-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-06T14:18:11.000Z","updated_at":"2024-05-27T12:46:49.272Z","dependencies_parsed_at":"2024-03-01T16:44:10.965Z","dependency_job_id":"8b789b8a-7e4e-465c-9c77-94821b5ee98d","html_url":"https://github.com/parca-dev/runtime-data","commit_stats":null,"previous_names":["parca-dev/runtime-data"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parca-dev%2Fruntime-data","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parca-dev%2Fruntime-data/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parca-dev%2Fruntime-data/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parca-dev%2Fruntime-data/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parca-dev","download_url":"https://codeload.github.com/parca-dev/runtime-data/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254582909,"owners_count":22095519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T06:19:40.386Z","updated_at":"2026-01-25T19:07:52.485Z","avatar_url":"https://github.com/parca-dev.png","language":"Go","readme":"# runtime-data\n\nThis project is a collection of tools to extract runtime data from several interpreters and runtimes.\nBy runtime data, we mean information about the execution of a program, especially stack unwinding and profiling.\n\n## Requirements\n\n- [Devbox](https://jetpack.io/devbox)\n  - Also see [CONTRIBUTING.md](CONTRIBUTING.md) for more information about the development environment.\n- [direnv](https://direnv.net/)\n\n```sh\nmake bootstrap\n```\n\n- A container runtime (e.g. Docker, Podman)\n  - Ability to run cross-platform containers (e.g. Docker Desktop, Podman with QEMU)\n\n```sh\nsudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages\ndocker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts\n\ndocker run --rm -t arm64v8/ubuntu uname -m\n```\n\n## Usage\n\n### Python\n\n```go\npackage python\n\nimport (\n    \"fmt\"\n\n    \"github.com/parca-dev/runtime-data/pkg/python\"\n)\n\nfunc main() {\n    layouts, err := python.GetLayouts()\n    if err != nil {\n        return fmt.Errorf(\"get python layouts: %w\", err)\n    }\n\n    fmt.Println(layouts)\n}\n```\n\n### Ruby\n\n```go\npackage ruby\n\nimport (\n    \"fmt\"\n\n    \"github.com/parca-dev/runtime-data/pkg/ruby\"\n)\n\nfunc main() {\n    layouts, err := ruby.GetLayouts()\n    if err != nil {\n        return fmt.Errorf(\"get ruby layouts: %w\", err)\n    }\n\n    fmt.Println(layouts)\n}\n```\n\n## Supported runtimes and versions\n\n### Python\n\n- **2.7**: 2.7.x\n- **3.x**: 3.3.x, 3.5.x, 3.6.x, 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x\n\n### Ruby\n\n- **2.6**: 2.6.0, 2.6.3\n- **2.7**: 2.7.1, 2.7.4, 2.7.6\n- **3.x**: 3.0.0, 3.0.4, 3.1.2, 3.1.3, 3.2.0, 3.2.1\n\n## Tools\n\nUnder the `cmd` directory, you can find the following tools:\n\n**structlayout**: Extracts the memory layout using the given map (a struct annotated with certain struct tags).\n**mergelayout**: Merges the given layouts into groups of layouts.\n\n### structlayout\n\n[embedmd]:# (tmp/structlayout-help.txt)\n```txt\nusage: structlayout [flags] \u003cpath-to-elf\u003e\ne.g: structlayout -r python -v 3.9.5 /usr/bin/python3.9\n\nflags:\n  -o string\n    \toutput directory to write the layout file (shorthand)\n  -output string\n    \toutput directory to write the layout file\n  -r string\n    \tname of the pre-defined runtime, e.g. python, ruby, libc, musl (shorthand)\n  -runtime string\n    \tname of the pre-defined runtime, e.g. python, ruby, libc, musl\n  -v string\n    \tversion of the runtime that the layout to generate, e.g. 3.9.5 (shorthand)\n  -version string\n    \tversion of the runtime that the layout to generate, e.g. 3.9.5\n```\n\n### mergelayout\n\n[embedmd]:# (tmp/mergelayout-help.txt)\n```txt\nusage: mergelayout -o outputDir \u003cpath-to-layout-files\u003e\ne.g: mergelayout -o /tmp/merged '/tmp/python/*.yaml'\n\nflags:\n  -o string\n    \toutput directory to write the merged layout file (shorthand)\n  -output string\n    \toutput directory to write the merged layout file\n```\n\n### debdownload\n[embedmd]:# (tmp/debdownload-help.txt)\n```txt\nNAME\n  debdownload\n\nFLAGS\n  -o, --output STRING       output directory to write the downloaded deb files\n  -t, --temp-dir STRING     temporary directory to download deb files\n  -u, --url STRING          URL to download deb files from\n  -p, --package STRING      package name to download\n  -a, --arch STRING         architectures to download\n  -c, --constraint STRING   version constraints to download\n\n```\n\n\n### apkdownload\n[embedmd]:# (tmp/apkdownload-help.txt)\n```txt\nNAME\n  apkdownload\n\nFLAGS\n  -o, --output STRING       output directory to write the downloaded apk files (default: tmp/bin)\n  -t, --temp-dir STRING     temporary directory to download deb files (default: tmp/apk)\n  -u, --url STRING          URL to download apk files from\n  -p, --package STRING      package name to download\n  -a, --arch STRING         architectures to download\n  -c, --constraint STRING   version constraints to download\n\n```\n\n### debuginfofind\n[embedmd]:# (tmp/debuginfofind-help.txt)\n```txt\nNAME\n  debdownload\n\nFLAGS\n  -d, --debuginfo-dir STRING   directory to write the downloaded debuginfo files\n\n```\n\n## Acknowledgments\n\n- [rbperf](https://github.com/javierhonduco/rbperf)\n- [rbspy](https://github.com/rbspy/rbspy)\n- [py-spy](https://github.com/benfred/py-spy)\n- [py-perf](https://github.com/kakkoyun/py-perf)\n\n## License\n\n[Apache 2.0](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparca-dev%2Fruntime-data","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparca-dev%2Fruntime-data","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparca-dev%2Fruntime-data/lists"}