Protobuf
view release on metacpan or search on metacpan
Revision history for Protobuf
0.12 2026-07-26
- Added SECURITY.md
[Ecosystem Hardening & Parity]
- Merged Google-Protobuf-WKT into core Protobuf distribution.
- Bundled standard Well-Known Types (Timestamp, Any, Descriptor, etc.) directly in lib/Google/Protobuf/.
0.11 Wed Jul 22 2026
[Documentation]
- Added missing 0.10 release entry to Changes file (reported by Lukas Mai / @mauke).
0.10 Wed Jul 22 2026
[Core Runtime & Multi-Platform Alignment]
- Synchronized $VERSION = '0.11' across all 45 sub-module .pm files to resolve DynaLoader version mismatch errors during XS bootstrapping.
- Process ID Tracking: Added getpid() check in xs/descriptor_pool/pool.c to reinitialize generated_pool_ptr across fork() calls, eliminating segfaults and use-after-free conditions in multi-process/forking servers.
- RPATH Linker Fix: Single-quoted \$$ORIGIN in Makefile.PL extra_ldflags so make/ld passes literal $ORIGIN to ld.so.
- Template Toolkit Integration: Refactored blib_libprotobufperl_copy Makefile rule out of Makefile.PL and into makefile.tt template block.
- Test Proto Automation: Added generate_test_protos rule in makefile.tt and untracked static pre-generated t/generated/*.pm files from Git tracking.
0.09 Sat Jul 18 2026
[Compatibility & API Layer]
- Added Google::ProtocolBuffers::Dynamic compatibility API shim (Google::ProtocolBuffers::Dynamic) backed by the high-performance upb C engine.
- Supported load_file, load_string, map_package, map_message, encode, and decode methods.
- Enabled automatic dynamic package mapping and class generation for mapped Perl namespaces.
- Added comprehensive compatibility unit test suite (t/025_dynamic_compat.t).
- Refactored App::EvalServerAdvanced::Protocol to utilize the new compatibility layer with File::ShareDir path resolution.
- Special thanks to Ryan Voots (@simcop2387) for testing, feedback, and driving compatibility requirements for App::EvalServerAdvanced.
[Bug Fixes & Smoker Hardening]
- Added RT bug tracker URL (https://rt.cpan.org/Dist/Display.html?Queue=Protobuf) to POD documentation across distribution modules.
- Fixed non-system perl (perlbrew/plenv/custom prefixes) linking errors caused by hardcoded static libperl.a search paths in Makefile.PL (CPAN RT #180139 & RT #178734 reported by Slaven ReziÄ / @srezic; with key build insights from Ryan Voot...
- Added -fPIC $Config{cccdlflags} to all C and C++ object compilation rules in Makefile.PL to prevent R_X86_64_TPOFF32 and R_X86_64_PC32 relocation errors under LTO (-flto=auto) and ithread builds (thanks to Lukas Mai / @mauke for catching an...
- Added Xcode SDK Perl CORE header search fallback in Makefile.PL for macOS Apple Silicon system Perl builds.
0.08 Sat Jul 18 2026
[CPAN Metadata Correction]
- Corrected repository URL to GoogleCloudPlatform/google-auth-library-perl.git and added bugtracker URL in Makefile.PL META_MERGE (thanks to Lukas Mai / @mauke for catching stale metadata).
[Build Systems & Clean Target Hardening]
- Enhanced Makefile.PL to automatically include bin/protoc-gen-perl-pb in standard Makefile 'all' and 'install' targets via EXE_FILES.
- Removed tracked ELF 64-bit binary bin/protoc-gen-perl-pb from Git tracking and added to .gitignore.
- Hardened Makefile.PL realclean target to preserve vendor/ C source headers and output object directory paths.
- Added git vendor auto-restoration fallback (git checkout -- vendor/) to Makefile.PL when vendor/ directory is missing in a Git workspace.
0.07 Fri Jul 17 2026
[Core Runtime & Descriptor Engine]
- Internal release prep and descriptor pool synchronization updates.
- Improved upb memory arena lifecycle management and string handling across XS calls.
0.06 Fri Jul 17 2026
[Windows & Multi-Platform Build Hardening]
- Enhanced Makefile.PL to search system library paths for libperl across Debian, Ubuntu, Fedora, and Arch layouts.
- Hardened protoc/plugin_main.cc on Windows by setting stdin and stdout to binary mode (_setmode O_BINARY), preventing line-ending corruption during protoc IPC.
- Sanitized backslashes in compiler include paths (-I) for MinGW and MSWin32 environments.
- Overrode MY::fixin in Makefile.PL to prevent script rewriting issues on Windows.
[Code Generator & Type System]
- Hardened Protobuf::ClassGenerator::_get_type_tiny_code to handle unresolved message type references via capitalized fallback class naming and Any type coercion instead of dying.
- Updated protoc-gen-perl-pb (protoc/generator.cc) to emit standard Apache 2.0 copyright headers in generated module headers.
[Architecture & CPAN Cleanup]
- Streamlined $VERSION declarations: pruned redundant $VERSION variables from generated sub-modules and schema files so CPAN toolchains track versioning exclusively through primary distribution entrypoints.
0.05 Mon Jul 6 2026
[Windows Portability & Build Hardening]
- Fixed building and linking of libprotobufperl on Windows (MinGW/Strawberry Perl) by linking with embed_ldflags (containing libperl542.a) and explicitly using .dll extension instead of $Config{dlext} (.xs.dll) for the helper library.
- Conditionally bypassed linking with -lpcre2-8 on Windows as PCRE2 is not used in the Windows test suite.
- Implemented the missing PerlUpb_Message_GetFingerprint function in the XS layer.
- Reordered C test headers to include perl.h before XSUB.h, preventing socket structure and macro redefinition conflicts under MinGW.
- Updated Makefile.PL and makefile.tt run targets to use Windows-compatible path separators (backslashes) and environment variable syntax (set PATH=... && command).
- Skipped POSIX-specific and unsupported tests on Windows, including ASan leak tests (036_asan_leak_test.c), tmpfs arena allocators, and tmpfs IPC tests.
[Documentation]
- Updated THANKS.md to thank Subinoy Dutta for exercising and verifying the Windows version.
0.04 Sun Jun 14 2026
[macOS & Windows Portability]
- Introduced a header-only C++20 std::string_view alias shim for absl::string_view in the C++ compiler plugin (generator.h, helpers.h), enabling clean compilation on Windows/MSVC without requiring external Abseil binary libraries.
- Bypassed Abseil binary library linking ($absl_libs) in Makefile.PL when compiling on Windows.
- Added platform detection in Makefile.PL to correctly use the .dylib extension for external libraries on macOS ($extlib_ext = $is_darwin ? 'dylib' : '$(DLEXT)').
- Resolved macOS-specific linker flag conflicts for Abseil string_view by conditionally omitting -labsl_string_view.
- Added support for appending .exe to the compiler plugin target in Makefile.PL and corrected the compiler invocation path on Windows.
- Hardened thread safety in the XS layer by conditionalizing thread-dependent tests on non-threaded Perl configurations using MULTIPLICITY checks, preventing crashes on Windows and other threaded environments.
[Bug Fixes]
- Fixed a critical compilation error in Protobuf.xs (XS_Protobuf__Arena__xs_stats) where incorrect thread context passing (aTHX instead of aTHX_) caused syntax errors on single-threaded Perl smoker systems.
- Fixed the same thread context bug in t/c/integration/050_convert_coro.c across several conversion functions.
- Resolved a dev-mode build block in Makefile.PL by dynamically adjusting the paths of JIT-vendored plugin.upb.c and descriptor.upb.c to use the correct Google3 translated layout (third_party instead of 3rd_party and net/proto2/proto).
- Fixed a destructive make clean bug in Makefile.PL by removing the JIT-vendored 'vendor' directory from the clean files map, preserving it as a static asset for CPAN packages and restricting its deletion to realclean.
( run in 1.504 second using v1.01-cache-2.11-cpan-84de2e75c66 )