Releases: betwixt-labs/bebop
Bebop v3.0.6
- Fixes bebop-tools (node) using the WASI binary on native systems
- Fixes erroneously importing Tempo when 'services' is set to 'none' (TypeScript)
- The macOS builds are not signed in this release
Bebop v3.0.5
What's Changed
- fix: github links in docs by @andrewmd5 in #313
- Fix typo in "serialization" by @homeworkprod in #314
- fix: generator outfile parsing on CLI by @andrewmd5 in #321
New Contributors
- @homeworkprod made their first contribution in #314
Full Changelog: v3.0.4...v3.0.5
Bebop v3.0.4
Introducing Bebop v3 - the fastest data serialization runtime in the world, and your new favorite replacement for Protocol Buffers 🚀
Now supporting:
- WASM powered compiler extensions 🦾
- Python support 🐍
- A 100% WinterCG compatible RPC 🌐
- And tons of DevEx & performance improvements 🏎️
Improved CLI
Bebop v3 introduces a new CLI that is faster, more reliable, and easier to use. We focused on making it POSIX compliant, and added deeper integration with bebop.json
configuration files. This makes it easier to use Bebop in your projects, and to integrate it into your build systems.
For more information on the CLI, check out the CLI documentation.
Improved VSCode Extension
We've overhauled the VSCode extension and made it faster, more reliable, and tightly integrated with your local project.
bebop.json Improvements
We've finally standardized the bebop.json
configuration file, and added new ways to configure your project.
For more information on the bebop.json
file, check out the bebop.json documentation & bebop.json schema.
Compiler Extensions
Bebop v3 introduces a new way to extend the compiler with chords
. Chords are small, self-contained programs that can be written in any language and run as part of the compilation process using WASM. This allows you to add new features to the compiler, such as custom code generation, validation, or even entirely new languages.
For more information, check out the chords documentation.
Python Support
Bebop v3 now supports Python! You can now generate Python code from your Bebop schema files. This is a great way to use Bebop in your Python projects, or to interoperate with other languages that have Python bindings. #283
Playground
We've removed the old REPL and replaced it with a shiny new playground. The new playground is faster, more reliable, and has a better user interface.
Checkc it out at play.bebop.sh.
Tempo RPC
Bebop v3 introduces a new RPC system called Tempo. Tempo is a high-performance, low-latency RPC system that is 100% compatible with WinterCG. This means you can use Bebop to build efficient APIs that are compatible with the WinterCG ecosystem.
For more information, check out the Tempo documentation.
Decorators
Bebop v3 introduces a new way to annotate your schema types with decorators
. Decorators are a way to add metadata to your types that can be used by the compiler to generate code. This is a great way to add custom behavior to your generated code, such as metadata, or to add custom validation rules.
Decorators replace the old attribute system. For more information see the decorators documentation.
v2 to v3
We've made a number of breaking changes in Bebop v3 to improve the developer experience and performance. Migrating from v2 to v3 is simple, just the following command:
bebopc convert --from v2 --to v3
All of the schemas in your included files will be converted to the new format.
Structs Immutable by Default
We've removed the readonly
modifier from the schema language, and made structs immutable by default. To make a struct mutable, you can use the mut
modifier.
For more information on the changes see the struct documentation.
Improved Documentation
As you've already seen from some of the links above, we've improved the documentation. We've added new guides, tutorials, and reference material to help you get started with Bebop, and to help you get the most out of the new features in v3.
You can find the new documentation at docs.bebop.sh.
.dev.vars & Constants
We've added a new way to dynamically define constants in your schema files using the .dev.vars
file. This is a great way to define constants that are specific to your development environment, such as API keys, or feature flags.
For more information on the .dev.vars
file, check out the dev.vars documentation.
bebopc.wasm
We've added a new way to run the Bebop CLI using WASM. This allows you to run the compiler in a browser, or in a serverless environment. When installing the bebop-tools
package from NPM, it will automatically install the WASM version of the CLI in the relevant environment.
We're using this to power the new playground - and have even got it running on Cloudflare Workers
Performance Improvements
In Bebop v3 you'll find that runtimes for TypeScript, Rust, and C# are much faster. We've also made improvements to the generated code to make it more efficient, and to reduce the size of various runtimes.
The .NET runtime fully supports AOT compilation, and the Rust runtime has been optimized for size and performance. In the TypeScript runtime we've also removed any hard dependencies on node that bundlers and WinterCG don't need without breaking node compatibility or introducing polyfills.
Misc Improvements
Conclusion
This update has been a long time coming, and we're really excited to finally share it with you. Please share your feedback, and let us know if you have any questions or run into any issues. We're here to help, and we're committed to making Bebop the best serialization format in the world.
Full Change History
- feat(ts-gen): typeguard helpers for unions by @andrewmd5 in #281
- chore: align integration test by @andrewmd5 in #284
- feat: #56 Python support by @liquidiert in #283
- feat: dart null safety ✨ by @liquidiert in #285
- feat(cli): POSIX CLI refactor by @andrewmd5 in #287
- feature: wasm-wasi CLI by @andrewmd5 in #288
- Feature/extensions by @andrewmd5 in #291
- feat: bebop-tools wasi (node) by @andrewmd5 in #292
- feat: v2 to v3 converter by @andrewmd5 in #293
- TypeScript/JavaScript EDK by @andrewmd5 in #294
- misc by @andrewmd5 in #295
- feat: mut modifier by @andrewmd5 in #296
- chore: remove structured logging by @andrewmd5 in #297
- feat: .dev.vars by @andrewmd5 in #298
- fix: binary schema by @andrewmd5 in #299
- feat: playground by @andrewmd5 in #300
- chore: convert schemas from v2 to v3 by @andrewmd5 in #301
- rc.1 by @andrewmd5 in #302
- feat: types for CompilerContext by @andrewmd5 in #303
- feat: build workflow by @andrewmd5 in #304
- fix: paths by @andrewmd5 in #305
- chore: chordc workflows by @andrewmd5 in #306
- feat: improved documentation by @andrewmd5 in #307
- feat(dart): correct enum serialization by @liquidiert in #286
- feat: release v3 by @andrewmd5 in #310
- release: bebop v3 by @andrewmd5 in #311
Full Changelog: v2.8.7...v3.0.4
Bebop v3.0.3-beta.3
Bebop v3.0.3-beta.2
Bebop v3.0.3-beta.1
Bebop v3.0.2-beta.1
Bebop v3.0.1-beta.1
Bebop v3.0.0-rc.3
Bebop v2.8.7
What's Changed
- feat: enable access to raw binary schema by @andrewmd5 in #279
Full Changelog: v2.8.6...v2.8.7