{"id":38502278,"url":"https://github.com/nathaniel-daniel/ruby-marshal-rs","last_synced_at":"2026-01-17T06:02:00.007Z","repository":{"id":203668467,"uuid":"710144173","full_name":"nathaniel-daniel/ruby-marshal-rs","owner":"nathaniel-daniel","description":"A Rust implementation of Ruby's Marshal module.","archived":false,"fork":false,"pushed_at":"2025-12-02T06:58:57.000Z","size":1854,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-05T01:26:51.417Z","etag":null,"topics":["dumper","loader","ruby","ruby-marshal","rust"],"latest_commit_sha":null,"homepage":"https://nathaniel-daniel.github.io/ruby-marshal-rs/ruby_marshal/","language":"Rust","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/nathaniel-daniel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-26T05:36:04.000Z","updated_at":"2025-12-02T06:58:31.000Z","dependencies_parsed_at":"2023-11-09T11:15:44.786Z","dependency_job_id":"582313a2-a722-47fb-a6f9-49294803d557","html_url":"https://github.com/nathaniel-daniel/ruby-marshal-rs","commit_stats":null,"previous_names":["nathaniel-daniel/ruby-marshal-rs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nathaniel-daniel/ruby-marshal-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaniel-daniel%2Fruby-marshal-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaniel-daniel%2Fruby-marshal-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaniel-daniel%2Fruby-marshal-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaniel-daniel%2Fruby-marshal-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathaniel-daniel","download_url":"https://codeload.github.com/nathaniel-daniel/ruby-marshal-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaniel-daniel%2Fruby-marshal-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28501434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"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":["dumper","loader","ruby","ruby-marshal","rust"],"created_at":"2026-01-17T06:01:59.315Z","updated_at":"2026-01-17T06:01:59.984Z","avatar_url":"https://github.com/nathaniel-daniel.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ruby-marshal-rs\nA Rust implementation of Ruby's Marshal module. Currently supports only a part of the format.\n\n## Supported Values\n * Nil\n * False\n * True\n * Fixnum\n * Symbol\n * Symbol Link\n * Object Link\n * Array\n * Hash\n * Object\n * String\n\n## Alternative Implementation (thurgood)\nWhy not use/improve [`thurgood`](https://docs.rs/thurgood/latest/thurgood/)? \nThere are a few reasons in the form of different design choices.\n\n\nFirstly, `thurgood` makes the assumption that a Ruby string can always be represented as UTF-8, which is not always the case.\nHowever, assuming this is true makes Ruby strings much nicer to interact with, which is fine if you control the marshal data.\nI could not make that assumption for my use case as I did not control the marshal data, so my library does not make that assumption.\n\n\nSecondly, `thurgood` makes the assumption that serialized objects are not cyclic, and as a result, cannot handle cycles correctly/safely.\nIn addition, it uses some questionable `unsafe` blocks to implement object links (this library currently uses 100% safe code, but that is not guaranteed to always be the case).\nWhile my use case did not directly require cyclic objects, I still wanted the ability to handle cyclic objects safely as I did not control the marshal data.\n\n\nThirdly, it focuses closely on creating a `serde_json`-like object model, providing close compatibility between Ruby objects and JSON.\nIt even provided methods for converting between the two.\nIn contrast, this library uses an arena to allocate Ruby values, mostly to handle cycles cleanly.\nHowever, interacting with an arena is closer to how one would interact with a DOM;\nit is much more difficult to interact with the objects in this library.\n\n\nIf your use case is not impeded by any of the above design choices, you may be better served by `thurgood`; its implementation is far more complete.\nFor my use case, I was forced to implement this library.\n\n## References\n * https://ruby-doc.org/core-2.4.8/\n * http://jakegoulding.com/blog/2013/01/16/another-dip-into-rubys-marshal-format/\n\n## License\nLicensed under either of\n * Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n * MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Contributing\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathaniel-daniel%2Fruby-marshal-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathaniel-daniel%2Fruby-marshal-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathaniel-daniel%2Fruby-marshal-rs/lists"}