{"id":24551951,"url":"https://github.com/mlabs-haskell/lambda-buffers","last_synced_at":"2025-04-15T22:20:25.030Z","repository":{"id":65070558,"uuid":"545445925","full_name":"mlabs-haskell/lambda-buffers","owner":"mlabs-haskell","description":"LambdaBuffers toolkit for sharing types and their semantics between different languages","archived":false,"fork":false,"pushed_at":"2025-04-14T06:39:01.000Z","size":9208,"stargazers_count":31,"open_issues_count":35,"forks_count":1,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-04-14T07:38:23.806Z","etag":null,"topics":["cardano","code-generation","flake-parts","haskell","nix","plutarch","plutus","protocol-buffers","purescript","rust","types"],"latest_commit_sha":null,"homepage":"https://mlabs-haskell.github.io/lambda-buffers/","language":"Haskell","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/mlabs-haskell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-10-04T11:40:56.000Z","updated_at":"2025-04-14T06:39:03.000Z","dependencies_parsed_at":"2024-01-16T09:18:00.525Z","dependency_job_id":"e18b5d8a-7168-4a4d-8b45-ae352efbb47a","html_url":"https://github.com/mlabs-haskell/lambda-buffers","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2Flambda-buffers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2Flambda-buffers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2Flambda-buffers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlabs-haskell%2Flambda-buffers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlabs-haskell","download_url":"https://codeload.github.com/mlabs-haskell/lambda-buffers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248843372,"owners_count":21170479,"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":["cardano","code-generation","flake-parts","haskell","nix","plutarch","plutus","protocol-buffers","purescript","rust","types"],"created_at":"2025-01-23T01:19:31.293Z","updated_at":"2025-04-15T22:20:25.017Z","avatar_url":"https://github.com/mlabs-haskell.png","language":"Haskell","readme":"# Lambda Buffers\n\n[![Hercules CI](https://hercules-ci.com/api/v1/site/github/account/mlabs-haskell/project/lambda-buffers/badge)](https://hercules-ci.com/github/mlabs-haskell/lambda-buffers/status)\n\n![LambdaBuffers banner](docs/images/lambda-buffers-banner.png)\n\n## Introduction\n\n_LambdaBuffers_ is a schema language (similar to ProtoBuffers, ADL, ASN.1, JSON\nSchema, etc.) and associated code generation toolkit. The goal of this project\nis to provide developers tools to define algebraic data types in a\nlanguage-agnostic format such that shared data types can be declared in one\nplace while maintaining compatibility across a plethora of supported languages.\n\nUsers may refer to the [comparison matrix](./docs/comparison-matrix.md) for an\nin-depth comparison of LambdaBuffers' features against the feature-set of other\npopular schema-languages.\n\nAt a glance, you may wish to choose LambdaBuffers instead of one of its\ncompetitors if your project requires:\n\n 1. _Parameterized Data Types_ (aka. type functions): Unlike ProtoBuffers or\n    JSON Schema, LambdaBuffers allows users to define algebraic data types which\n    take type variable arguments. If your project's domain is most accurately\n    represented by parameterized data types, LambdaBuffers may be a good choice\n    for your needs.\n\n 2. _Opaque Types_: Almost every competing schema language provides users a\n    fixed set of builtin or primitive types, which are handled in a special\n    manner by the code generation and cannot be extended. LambdaBuffers, by\n    contrast, allows users to add their own builtin types and extend the\n    existing code generation framework to handle those builtins in a manner\n    intended by the users. There are no _special_ primitive types in\n    LambdaBuffers; a user-defined primitive type is defined in exactly the same\n    way (i.e. as an `opaque` type) as a LambdaBuffers \"builtin\".\n\n 3. _Typeclass Support_: While nearly every schema language supports generating\n    type definitions in supported target languages, to our knowledge no schema\n    language supports generating commonly used functions that operate on those\n    types. Unlike other schema languages, LambdaBuffers supports code generation\n    for _typeclass instances_ (or the equivalent in languages that lack support\n    for typeclasses) to reduce the amount of boilerplate required to\n    productively make use of the generated types. While LambdaBuffers is still a\n    work-in-progress, we expect that, upon completion, an extensive test suite\n    will provide a high degree of assurance that the instances/methods generated\n    by the LambdaBuffers code generator behave identically.\n\n## Documentation\n\nVisit [LambdaBuffers Github Pages](https://mlabs-haskell.github.io/lambda-buffers).\n\n## Acknowledgements\n\nThis project was graciously funded by the Cardano Treasury in [Catalyst Fund 9](https://cardano.ideascale.com/c/idea/421376) and [Catalyst Fund 10](https://cardano.ideascale.com/c/idea/105975).\n\nAuthors:\n\n- [Drazen Popovic](https://github.com/bladyjoker)\n- [Vlad Posmangiu Luchian](https://github.com/cstml)\n- [Sean Hunter](https://github.com/gnumonik)\n\nContributors:\n\n- [George Flerovsky](https://github.com/GeorgeFlerovsky)\n- [Andrea Ciceri](https://github.com/aciceri)\n- [Julia Chatain](https://juliachatain.com)\n- [Andrea Vezzosi](https://github.com/saizan)\n- [Magnus Viernickel](https://github.com/MangoIV)\n- [Rajdeep Chase Maity](https://github.com/TotallyNotChase)\n- [Ramiro Garay](https://github.com/rmgaray)\n- [Jared Pon](https://github.com/jaredponn)\n- [Gergely Szabo](https://github.com/szg251)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Flambda-buffers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlabs-haskell%2Flambda-buffers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlabs-haskell%2Flambda-buffers/lists"}