{"id":24369986,"url":"https://github.com/unikraft/lib-ruby","last_synced_at":"2026-02-28T10:06:43.460Z","repository":{"id":48078188,"uuid":"226025272","full_name":"unikraft/lib-ruby","owner":"unikraft","description":"Unikraft port of Ruby","archived":false,"fork":false,"pushed_at":"2024-01-02T20:56:16.000Z","size":42,"stargazers_count":0,"open_issues_count":1,"forks_count":3,"subscribers_count":10,"default_branch":"staging","last_synced_at":"2025-06-14T20:15:15.328Z","etag":null,"topics":["library","ruby","unikraft"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unikraft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.md","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":"2019-12-05T05:44:13.000Z","updated_at":"2023-10-20T17:11:23.000Z","dependencies_parsed_at":"2023-01-22T11:40:15.178Z","dependency_job_id":"93642266-d31f-4c1a-9544-a51f86d30ce6","html_url":"https://github.com/unikraft/lib-ruby","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/unikraft/lib-ruby","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unikraft%2Flib-ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unikraft%2Flib-ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unikraft%2Flib-ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unikraft%2Flib-ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unikraft","download_url":"https://codeload.github.com/unikraft/lib-ruby/tar.gz/refs/heads/staging","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unikraft%2Flib-ruby/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29929670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T09:58:13.507Z","status":"ssl_error","status_checked_at":"2026-02-28T09:57:57.047Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["library","ruby","unikraft"],"created_at":"2025-01-19T04:11:26.515Z","updated_at":"2026-02-28T10:06:43.443Z","avatar_url":"https://github.com/unikraft.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ruby for Unikraft\nThis is the port of Ruby for Unikraft as external library.\n\n## Build\nRuby depends on the following libraries, that need to be added to `Makefile` in\nthis order:\n\n* `pthreads`, e.g. `pthread-embedded`\n* C++ libraries: `compiler-rt`, `libcxx`, `libcxxabi`, `libunwind`\n* `libc`, e.g. `newlib`\n* network stack, e.g. `lwip`\n* optional extensions: `openssl`, `zlib`.\n\nA mandatory build dependency is the Ruby interpreter itself, because it is\nneeded to properly configure the original sources.  If you want to build the\nextensions as well, then you will also need to have them installed on your\nbuild system (e.g. `openssl`, `zlib`).\n\n## Root filesystem\n### Creating the filesystem\nRuby interpreter needs a filesystem which should contain its libraries.\nTherefore, the filesystem needs to be created before running the VM.  You can\ndo this by running the following command:\n\n```bash\nmake ruby-rootfs path=\u003csome directory\u003e\n```\n\nIt will create the filesystem in the directory you choose where it will install\nthe Ruby libraries. In order to achieve this, the original code needs to be\nconfigured and build with paths relative to the provided root directory. These\ntwo steps are executed transparently, all you have to do is just running the\nabove `make` command.\n\n### Using the filesystem\nThe same steps presented in the same subsection of the Python 3 port README\nshould be followed.\n\n## Running modes\nThe next step is to pick a running mode. We currently support the following\nrunning modes:\n\n1. **Ruby script**. You can use any file available in the root filesystem.  You\nshould use Qemu's `-append` option to pass parameter to Python interpreter,\ne.g. `-append \"vfs.rootdev=test -- \u003csome file in rootfs\u003e\"`.  Please notice that\nwe are using `test` for the 9pfs mounting tag. For brevity we will skip setting\nthe mounting tag in the next examples.\n\n2. **Ruby shell**. You can run the interactive Ruby shell, which is just a Ruby\nscript, with the parameters: `-append \"-- /bin/irb\"`.\n\n3. **Command line**. You can provide a one line script using the `-e` option,\ne,g. `-append \"-- -e 'puts \\\"Hello World\\\"'\"`.\n\n4. **Ruby unit testing (developers only)**. With this mode you can check what\nfunctionality is completely supported by the Ruby port. Please be aware that\nthis mode is unstable and some of the tests may block. In order to run all the\nunit tests you should use the following parameters: `-append \"-- /lib/ruby/2.6.0/test/runner.rb --exclude=dtrace --exclude=mkmf --exclude=win32ole --exclude=rdoc\"`.\n\nWe also provide a configuration option for building `miniruby`, a minimalistic\nversion of the Ruby interpreter build in the same way as for Linux. `miniruby`\ndoes not have any extension or encoding, therefore its usage is limited. You\ncan either use it for running simple scripts or simple one liners.\n\n### Memory usage\nSome of the unit tests may require a lot of memory to run; for this\nreason please allow for at least 1G of memory for unit testing (e.g.,\n`-m 1G` in Qemu).\n\n## Further information\nPlease refer to the `README.md` as well as the documentation in the `doc/`\nsubdirectory of the main unikraft repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funikraft%2Flib-ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funikraft%2Flib-ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funikraft%2Flib-ruby/lists"}