Skip to content

[btoon] new port - #54944

Open
Alvar Laigna (alvarlaigna) wants to merge 5 commits into
microsoft:masterfrom
alvarlaigna:btoon-new-port
Open

Alvar Laigna (alvarlaigna) wants to merge 5 commits into
microsoft:masterfrom
alvarlaigna:btoon-new-port

Conversation

@alvarlaigna

@alvarlaigna Alvar Laigna (alvarlaigna) commented Nov 7, 2026 •

Copy link
Copy Markdown

Adds btoon, the reference C++20 implementation of BTOON. BTOON is a compact binary serialization format: MessagePack plus a columnar encoding for arrays of records. It encodes canonically, and the decoder is hardened against hostile input.

  • Upstream: https://github.com/BTOON-project/btoon-core (MIT). The port uses release v0.1.3 from GitHub.
  • Features brotli, lz4, snappy and zstd enable the optional compression envelopes. zlib is always required.
  • The port is static only (vcpkg_check_linkage(ONLY_STATIC_LIBRARY)): the C++ API has no DLL export annotations.
  • Upstream's btoonConfig.cmake calls find_dependency for exactly the codecs the build used. Codecs come from their CMake packages (lz4::lz4, zstd::libzstd, unofficial::brotli::*, Snappy::snappy), and pkg-config is disabled.

Since the first CI run, upstream fixed the Android build: Android's libc has no shm_open, and core now builds there and runs an NDK build in its own CI. Upstream also shipped security fixes for its zero-copy module, so the port moves to v0.1.3.

Tested on arm64-osx: btoon and btoon[brotli,lz4,snappy,zstd] install cleanly. A separate project using the vcpkg toolchain, find_package(btoon CONFIG REQUIRED) and btoon::btoon_core builds and round-trips data through every codec. Upstream CI builds the library with GCC, Clang, Apple Clang and MSVC.

  • Changes comply with the maintainer guide.

  • The packaged project is mature and ready for broad sharing with vcpkg users

    • Has a release at least 6 months old or 6 months of demonstrated public development. The repository has been public since 2025-11-14, and the project's Python package btoon has been on PyPI since 2025-12.
    • Is an official component of something else meeting that criteria
    • Some other reason (please explain)
  • The packaged project shows strong association with the chosen port name. Check this box if at least one of the following criteria is met:

    • The project is in Repology: https://repology.org/project/btoon/versions
    • The project is amongst the first web search results for "btoon" or "btoon C++". Include a screenshot of the search engine results in the PR.
    • The port name follows the 'GitHubOrg-GitHubRepo' form or equivalent Owner-Project form.

    None of these is met yet: the project is new to search engines. btoon is the project's only name, though. It's used by the GitHub org (BTOON-project), the website (btoon.net), PyPI btoon, npm btoon and @btoon/js, and Packagist btoon/btoon, and no other project uses it. If you'd rather have the Owner-Project form, I'll rename the port to btoon-project-btoon-core.

  • Optional dependencies of the build are all controlled by the port. The codecs are behind features and off by default, pkg-config is disabled with CMAKE_DISABLE_FIND_PACKAGE_PkgConfig, tests, tools and examples are off, and zlib is an unconditional dependency.

  • The versioning scheme in vcpkg.json matches what upstream says.

  • The license declaration in vcpkg.json matches what upstream says.

  • The installed as the "copyright" file matches what upstream says.

  • The source code of the component installed comes from an authoritative source.

  • The generated "usage text" is brief and accurate. The port adds no usage file, because the generated text (btoon::btoon_core) is correct.

  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.

  • Exactly one version is added in each modified versions file.

πŸ€– Generated with Claude Code

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Copilot was unable to complete this review at the selected tier due to model policy or plan restrictions.

πŸ”΅ Needs a closer look

This adds a new vcpkg port whose correct build/install behavior, exported CMake targets, codec dependency wiring, and inclusion of required third‑party/licensing artifacts require an actual multi-triplet vcpkg install and installed-file inspection that cannot be validated from the diffs alone.

No open issues πŸŽ‰

What changed in this PR

Adds a new vcpkg port, btoon, packaging the upstream BTOON reference C++20 implementation (v0.1.1) with static-only linkage and optional, feature-gated compression codec support.

Changes:

  • Introduces the new ports/btoon port (manifest + CMake-based portfile) with zlib as a core dependency and optional brotli, lz4, snappy, zstd features.
  • Registers btoon in the vcpkg versioning database (baseline + per-port versions file) at 0.1.1.
File Summary
versions/​baseline.json Adds the btoon baseline entry at version 0.1.1.
versions/​b-/​btoon.json Adds the initial versions database record for btoon (0.1.1).
ports/​btoon/​vcpkg.json Defines port metadata, core dependency on zlib, and optional codec features (brotli, lz4, snappy, zstd).
ports/​btoon/​portfile.cmake Implements the build/install recipe: fetches upstream source, configures CMake options (disabling tests/tools/examples), applies CMake config fixup, and installs license/copyright.

Review effort: Balanced

@alvarlaigna

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

@BillyONeal

Copy link
Copy Markdown
Member

This looks good but I want to get confirmation on the name; when I search for this I also get pointed to https://github.com/yuki-koyama/btoon ; I think it's unlikely we would ever be involved with Blender plugins but likelihood of confusion still exists.

btoon-project-btoon is the "automatic approval" / GitHubOrg-GitHubRepo name and that seems kinda redundant.

@BillyONeal Billy O'Neal (BillyONeal) added the requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look. label Nov 9, 2026
@alvarlaigna

Copy link
Copy Markdown
Author

Thanks for taking a look! I'd like to keep btoon if the team agrees. BTOON is the format's name and the name this library uses everywhere: find_package(btoon CONFIG REQUIRED), headers under include/btoon/, and the same btoon package on PyPI, npm and Packagist (btoon/btoon), plus btoon.net. Repology has no other btoon. yuki-koyama/btoon is a Python Blender add-on with no commits since June 2020, so it can't become a vcpkg port and shares no files or CMake names with this one.

If you'd rather disambiguate, btoon-core also works for me: it's the repository's name, and the library target is btoon::btoon_core. I'd prefer either over btoon-project-btoon-core.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

requires:vcpkg-team-review This PR or issue requires someone on the vcpkg team to take a further look.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants