{"id":16960186,"url":"https://github.com/dflemstr/femtopb","last_synced_at":"2025-03-22T14:30:52.816Z","repository":{"id":230983408,"uuid":"765337384","full_name":"dflemstr/femtopb","owner":"dflemstr","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-19T12:33:42.000Z","size":212,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-22T10:15:42.099Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/dflemstr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2024-02-29T18:16:06.000Z","updated_at":"2024-08-01T18:39:47.916Z","dependencies_parsed_at":"2024-04-15T15:03:33.870Z","dependency_job_id":"68b1148b-a7a0-4ee9-b719-2b9e80807481","html_url":"https://github.com/dflemstr/femtopb","commit_stats":null,"previous_names":["dflemstr/femtopb"],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflemstr%2Ffemtopb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflemstr%2Ffemtopb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflemstr%2Ffemtopb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dflemstr%2Ffemtopb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dflemstr","download_url":"https://codeload.github.com/dflemstr/femtopb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244217802,"owners_count":20417665,"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-10-13T22:47:30.198Z","updated_at":"2025-03-22T14:30:52.503Z","avatar_url":"https://github.com/dflemstr.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# femtopb\n\nA tiny footprint, `#[no_std]`, no-alloc, no-panic Protobuf serialization library.  This allows you to communicate using\nProtobuf on constrained platforms, like bare-metal MCUs with very limited RAM.\n\nYes, you heard it right: this library lets you serialize and deserialize Protobuf messages without any dynamic\nmemory/heap allocation.\n\nThe library takes care of using simple types with limited use of generics when possible, to avoid monomorphization\ncode size explosion.  The runtime also consists of many tiny functions so that the ones that aren't used can get\noptimized away.\n\nDuring testing of this crate, checks are made to ensure that `femtopb` code cannot panic.  If  you want to leverage the\nno-panic checks yourself to debug your own project, enable the `assert-no-panic` crate feature.  It is not necessarily a\ngood idea to enable this feature for your release code, as enabling this feature might change the generated code\nslightly.\n\nThere are some limitations, however.  Messages must be deserialized from continuous `\u0026[u8]` slices, so incremental\ndeserialization from other `bytes::Buf` types or streams/files/sockets/... is not supported.  Also, messages borrow\ntheir source slice for the duration of their lifetime.  Deserialization of repeated fields happens lazily to avoid\nhaving to dynamically allocate a `Vec`-like data structure.\n\nThe library does not implement advanced features like Protobuf reflection or well-known types, etc.  For that, use the\n[`prost`][prost] crate.  It is probably advisable to use `prost` for applications where it is possible, and only use\n`femtopb` on platforms where it is necessary.\n\n## Attribution\n\nThe API is heavily inspired by the [`prost`][prost] crate, which is licensed under the Apache 2.0 license.  Some tests\nand key algorithms have also been copied from that crate. This crate is also licensed under the Apache 2.0 license.\n\n[prost]: https://crates.io/crates/prost\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdflemstr%2Ffemtopb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdflemstr%2Ffemtopb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdflemstr%2Ffemtopb/lists"}