.. currentmodule:: bitproto
- Bugfix: Fix sign extension for arbitrary-width signed integers such as
int62in the standard-mode C runtime. This avoids undefined shifts and fixes decoding these fields on big-endian hosts.
- Bugfix: Broaden
BP_BIG_ENDIANauto-detection beyond GCC/Clang's__BYTE_ORDER__to also cover ACLE-compatible Arm toolchains such as TI Arm Clang (__ARM_BIG_ENDIAN), legacy TI ARM CGT (__big_endian__), other toolchains that define__BIG_ENDIAN__, and IAR (__LITTLE_ENDIAN__ == 0), in both the optimization-mode generated code and the standard-mode C library. Previously these big-endian targets fell through to the little-endian path and produced incorrect results for multi-byte fields. PR #84. - Packaging: Show the project README as the long description on the PyPI project
page for the
bitprotopackage.
- Feature: Big-endian host support. bitproto's wire format is little-endian on every platform; the C library (standard mode) and the C optimization-mode generated code now also produce correct output when compiled for a big-endian host. Python and Go were already endian-neutral and unaffected.
- Feature: New compiler option
--endian(both|little|big) controlling the host byte order targeted by optimization-mode C/C++ code. The defaultbothemits both code paths guarded by#ifdef BP_BIG_ENDIANand auto-detects the host (overridable by definingBP_BIG_ENDIAN);littlekeeps only the original, smaller and faster byte-pointer code (no big-endian support);bigemits only the portable path. - The little-endian generated code is unchanged from previous releases, so there is no performance regression on the common little-endian target.
Warning: May break some existing projects's generated names:
- Improve snake_case function. #74, #75
Warning: May break some existing projects's generated names:
- Bugfix: pascal_case formatter. ISSUE #68, PR #69.
- Bugfix: Fixed naming style of generated code such as IntegerConstant (style lookup supports inheritance). ISSUE #70 PR #70
- Feature: Add a simple language-server, tested on neovim and vscode.
- Editor: Upgrade vscode extenions to support the
bitproto-language-server.
- Feature: Allow using constants as option values. ISSUE #61, PR #63
- Fix bug: enum importing other bitproto's field name generation bug. #53 #52
- Fix bug: import statements of bitprotos should be placed ahead of other declarations. #53
- Performance improvements for C bitprotolib, 40~60us improvement per call on stm32. PR #48.
- Fix Python nested message
__post_init___function code generation. PR #48, commit 73f4b01.
- Add support for Python 3.11
- First fully release version
- Support signed integers with arbitrary bits, e.g. int24 PR#45.
- Use Python IntEnum for enum generation (respecting backward compatibility) PR#41.
- Minor fix compiler setup.py path issue.
- Allow using
typeas message field name, fixes issue #39.
- Add support for
messageandenumextensiblity for protocol forward compatibility. - Cut down the code size of generated language-specific files.
- Refactor the bitproto compiler.
- Refactor the bitproto serialization mechanism, using language-specific libraries instead of pure compiler-generated files.