Skip to content

5.9.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 15:42
· 121 commits to main since this release
Immutable release. Only release title and notes can be modified.

Changes (Release 5.9.0)

Summary (pypdfium2)

  • Finally updated native sourcebuild from pdfium 7191 to 7841.
    Updating the script & patches, and tracking down any issues that cropped up, adding new patches to fix them, turned out to be a great deal of work.
  • Created gn-dist project providing recent builds of GN (generate-ninja) for Linux (glibc and musl, full set of architectures).
    Updated pypdfium2's cibuildwheel config and workflows accordingly to use gn-dist rather than outdated distro packages of GN.
    Scripting to build GN from source previously included in pypdfium2's setup has moved to gn-dist.
    In build_native.py, patches for legacy GN are still included and enabled by default for now, but you can pass --no-legacy-gn to skip them.
    To make updating more straightforward, this mode will be made default and the patches will be removed in the future.
  • Workflows overhaul.
    • Deduplicated workflow_dispatch and workflow_call inputs using YAML anchors & aliases (available on GHA since 09/2025).
    • Replaced benc-uk/workflow-dispatch action with reusable workflow calls.
    • Deduplicated series of individual jobs by switching to matrices. Handle if-conditions through an input parameter to the called workflow, because (unlike jobs) matrix entries have no built-in conditionality.
    • Updated to Python 3.14 (mostly). Simplified test matrices to probe just a few Python versions (e.g. 3.8, 3.11, 3.14).
  • Limited who has maintainer access to the repo and project sites.
    mara004, the author and so far only active committer of pypdfium2, now is (and will remain) sole owner.
    Inactive co-maintainers no longer have access, but are welcome to submit PRs.
    In the event of the author being unable to pursue this project further, it can be forked and a new maintainer may build their own trust, but given the risks inherent to maintainer changes, it has been decided that pypdfium2 will remain mara004's personal project. The existing userbase will not be handed over to another maintainer.
pypdfium2 commit log

Commits between 5.8.0 and 5.9.0 (latest commit first):

  • f4b4032a [autorelease main] update 5.9.0
  • 073a8730 Add another note to the changelog
  • fbcf26ce bulid_native: make --version main work (in gcc mode)
  • 22530e39 Prepare changelog for next release
  • 3628a5a0 fix typo 'pouplar' (to 'popular') (cf. #436)
  • 1838acb1 build_native.py: ack //build/toolchain/linux/unbundle
  • 6570b33b build_native: cherry-pick openjpeg security fix
  • ce1f0f77 android: set use_mold to false
  • 53c58228 justfile: open browser in background
  • 71568ff6 AutoCloseable style nit
  • af847562 correction: negative crop does not actually work
  • f729f447 pyproject.toml: align order of commented-out system libs
  • 2044a804 Make autoflake happy
  • 1da966ec Drop gn_build.patch
  • a6d1ee6a cibw/loongarch64: fix GN version
  • 9cae361a Improve gn-dist integration
  • ca980469 build_toolchained: rework GN task, call honor_gn_dist()
  • 767bd0f9 Bring recent GN to sbuild/sbuild_native workflows
  • ababbbd6 cibw: move down gn-dist handlers
  • 57f496cd cibw: spell out list of CPUs instead of using || true
  • 96f527b7 cibw: fix loongarch64 not getting gn_dist binary
  • 4cb251ee Use gn-dist (#432)
  • 65641ce4 Bump SBUILD_NATIVE_PIN to 7841
  • 7febaf1f build_native: minor optimization
  • 166633df Bump SBUILD_NATIVE_PIN to 7835
  • 413d13b6 sbuild update instructions: mention CIBW workflow
  • 6015a0cf ci: deduplicate inputs, replace benc-uk/workflow-dispatch with reusable workflows (#431)
  • c4a186f6 PdfPage.render(): acknowledge negative crop
  • c08ab357 main.yaml: add task
  • b830eeeb nit: fix a minor whitespace inconsistency
  • 79255e61 Polish req/setup.txt
  • ea71a567 CLI: improved disclaimer
  • 64691b9e ci: always update pip first
  • d6abcb1f Bump SBUILD_NATIVE_PIN to 7831
  • 2ad0b232 Revert dubious DEBUG_AUTOCLOSE check
  • 15ade1df Rename cibw_class to cibw_os
  • 304c2edc ci: deduplicate cibw, sbuild and sbuild_native workflows using matrices (#430)
  • 23716a59 Update static clang again
  • 62d1a72d Set use_cxx23 to False in build config
  • 84ebcbda readme: add harfbuzz (and simdutf) to dependency lists
  • 5c8995d9 Fix musl_fix_libclang_rt_finder patch
  • 3c7d86f7 build_native: style nit
  • f23a93e0 pyproject.toml: use --no-legacy-gn in cibw config
  • d40c52c6 Make legacy GN patches opt-out
  • cf669d96 Update GN version (source build fallback)
  • 5be6bf77 Bump SBUILD_NATIVE_PIN to 7828
  • 23e6388f cibw: on linux (glibc) with static clang, use the vendored libc++ (#429)
  • ba746a8f Opt for the much leaner libpng ppc64 fix after all
  • f4af8b67 build_native: update pdfium from 7191 to 7827 (#428)
  • 6082a1ca CI: update cibuildwheel python version also
  • f22d80cb CI: reduce number of python versions to test
  • 009f1999 CI: Add and update to Python 3.14
  • b286844d Slightly tweak autoclose-related logs that don't need os.write()
PDFium commit log

Commits between 7825 and 7869 (latest commit first):

  • 80fccd755 [Android] Remove unnecessary CFPF_SkiaDeviceModule singleton
  • 1029a965b Create FDPFPageObj_AddExistingMark()
  • 7e1dd12c2 Rename core/fxge/apple/ files to match their classes
  • 9bfb3a58a Introduce CFX_DIBitmap::PopulateFromSpan() and PopulateFrom1bppSpan()
  • 00b52f79b Move font substitution arrays and helpers to CFX_SubstFont
  • 54f0e7ac4 Make FX_Random::Fill() the only entry point to FX_Random.
  • 0a23e6f43 Use slightly better random numbers for GenerateFileId().
  • bea414c80 Remove some kTable* constants from the global namespace.
  • 994e1f365 Tidy CPDF_FontSubsetter
  • 1178e9ae6 Move TT Name Table parsing down to fxge/ layer.
  • 27701c3bb Move guts of CFX_CTTGSUBTable creation to CFX_Font.
  • 1efc5bb8d Clean up legacy CFX_ prefixes and move font table parser
  • 108063f61 Move CFX_CTTGSUBTable to core/fxge
  • 2a6e4f02e Remove obsolete import of //build/config/chromeos/ui_mode.gni
  • 2f8e2ce0d Add FPDFTextObj_SetFontSize() public API
  • a5dce0851 Add CFX_Font::GetCharBBox() helper method
  • b3a943e3d Encapsulate more of CFX_Face in CFX_Font
  • 498e8ddb3 Add still more fontations equivalents to cfx_face.cpp
  • 4daa8ec3a Continue adding fontations equivalents to cfx_face.cpp
  • cc5fcec45 Add coverage for invalid bfchar CIDs
  • 77f980f7f Use GetFileContents() to simplify fx_skrifa_unittest.cpp
  • 8a52b4df0 Simply rust Slice construction in CFX_Face.
  • 5c422dfb1 Add fontations equivalent for CFX_Face::GetCharCodesAndIndices().
  • f0393b98f Roll Depot Tools from 64b2927117d0 to ed3a6fdd519a (54 revisions)
  • 6308a8b36 Add fontations calls and checks to CFX_Face::GetGlyphBBox()
  • c291784f6 Add additional Fontations calls to CFX_Face.
  • 630e0b8d1 Add fontations code for CanEmbed().
  • 204bd1660 Add Fontations support for CFX_Face::GetOs2CodePageRange().
  • 000a55e9e Call skrifa APIs in parallel in CFX_Face::LoadGlyphPath().
  • 3fbf45d47 Fix missing use of fontmetrics when checking skia bounding boxes.
  • ba3a65ac5 Remove isolate argument from JSGetObject().
  • 29dcd7e9c Rename CFX_V8 to CFX_IsolateWrapper
  • 5d170ba40 Refactor dynamic property adapters to avoid nested ifs.
  • 51a7cf784 Use v8::Local<> in DynPropGetterAdapter()
  • 52eaf3272 Rename CidSet enum entries
  • 8a02e3f08 Collapse std::unique_ptrv8::Global to v8::Global in XFA.
  • 11439fe4c Remove CFXJSE_Value wrapper in favor of v8::Global
  • b66c914fb Fix width calculation under skia in CFX_Face.
  • ceb1b50ff Make CJBig2_GRDProc::DecodeArithOpt3() templated
  • 78cd1a294 Make PDF_ENABLE_SKIA_TYPEFACE_CHECKS a GN build argument.
  • efe3f3028 Add missing config to //testing:test_support target
  • e30fc3988 Fix cffl_formfield.h reference in some comments
  • a8814376b Replace some static_casts with fxcrt::to_underlying()
  • 276f8f0bd Remove dead code from CFXJSE_Value.
  • 63d9c7846 Do not access form_fill_env_ until after last re-entrant JS call.
  • 65c78d072 Patch CVE-2026-6192 in libopenjpeg
  • 49c25b603 Make equivalent Skia calls in CFX_Face under Fontations builds.
  • 09704940d Verify document in CFXJSE_Engine::ToXFAObject()
  • 8542da7f2 Roll Zlib from 89921383f1f5 to 5c1dfd53066b (1 revision)
  • 6b69de71d Roll Memory Tools from b635f27e9323 to 66b0df34a721 (3 revisions)
  • 55f03afc8 Do line fetching inside CJBig2_Image in bulk
  • c9513f398 Add CJBig2_Image::stride32()
  • fa5db8d55 Fix variants of prior CJS_Field::set_display() issue.
  • 937e95063 Add big scary term "Reentrant" to fxjs methods that enter JS.
  • de011a269 Make several CJBig2_Image methods private
  • 9f6089d4d Avoid order-of-evaluation issues in CJS_Field::set_display().
  • 159b66453 Encode property names when generating a page.
  • 2d2d4fabd Git ignore .jetskicli files.
  • 9095044e2 Roll third_party/skia/ 163dfdf50..d10ea850c (329 commits; 49 trivial rolls)
  • ef2d0f9c5 Move fx_dib.h into namespace fxge
  • 7d87ed1f2 Use GetWritableScanline() in more places inside CFX_DIBitmap
  • 423b6b376 Roll third_party/cpu_features/src/ 936b9ab55..d3b2440fc (88 commits)
  • 3f09d85ad Roll third_party/nasm/ 452528587..358842b6b (507 commits)
  • 9c682beaf Roll abseil, android_ndk, build, buildtools, clang, libc++, and rust
  • 362640c04 Rename array name in CRYPT_SHA1Finish()
  • adc87eca6 Roll third_party/libpng/ 367bb5ca4..8a5b4ace0 (1 commit)
  • e39b9c0e9 Cache data size in CJBig2_Image
  • 012b9390d Mark CFX_DIBBase::FlipImage() as Windows / XFA-only
  • 8ec61de5a Change FXDIB_ALPHA_MERGE() from a macro to a function
  • 1e0bc3f15 Rename functions in fx_crypt.cpp to follow UpperCamelCase
  • d4380f36c Rename SHA functions to follow UpperCamelCase
  • 9ef2ca7d9 Upgrade to lcms 2.19
  • 2f77b38fe Rename JBig2 files to have lower case, snake_case names
  • 6845db4c1 Add FxDibTest.AlphaMerge
  • f65c52aac Roll Catapult from 7343182d94b7 to 9fd976b2695e (71 revisions)
  • 50fd77b49 Roll Code Coverage from f9e72c2a3ad1 to 74d04576e893 (4 revisions)
  • 260318838 Make some fxge code Windows / AGG-only
  • f8cec29fc Fold CFX_DIBitmap::ConvertBGRColorScale() into ConvertColorScale()
  • 97ac10a61 Simplify CFX_DIBitmap::ConvertColorScale() and ConvertBGRColorScale()
  • 041bf3782 Make CFX_RenderDevice::Get{Horz,Vert}Size() Windows-only
  • 8c9ab07d4 Remove more CFX_RenderDevice getters
  • 21c5df09b Remove RenderCapAlphaPath()
  • 8197a684b Roll third_party/harfbuzz/src/ a243dcb5c..e6741e220 (406 commits)
  • 2e0601854 Roll third_party/harfbuzz/src/ 4fc961392..a243dcb5c (261 commits)
  • 518d500c0 Clarify FPDF_NewXObjectFromPage() return value's lifetime
  • bf13a74ba Update gn_version to 1740f5c25bcac5a650ee3d1c1ec22bfa25fcd756
  • 58a1b4ad2 Clarify C++ standard in .clang-format
  • 096d774ab Cherry-pick openjpeg changes to speed up jpeg2000 decoding on arm
  • 374edcd2b Fold 0035-opj_image_data_free.patch into 0022-jp2_apply_pclr_overflow.patch
  • 4d59a7129 Persist FPDFPage_InsertObjectAtIndex() ordering on save
  • 11b7e080a Rename AdobeCMYK_to_sRGB() and AdobeCMYK_to_sRGB1()
  • 5d0010027 Roll v8/ f9659283a..8e10f842e (749 commits; 1 trivial rolls)
  • 180b3353a Roll third_party/llvm-libc/src/ 2a826f2fd..ada036045 (124 commits)
  • eab440015 Roll third_party/brotli/ 8e1083278..aaafc7036 (1 commit)
  • 2bc6a5b1c Replace some char pointers with ByteStrings in embedder tests
  • cde520d12 [v8] Migrate from deprecated setter/definer callback signatures
  • dd02d6dc6 Roll third_party/freetype/src/ 99b479dc3..6d9fc45fc (39 commits)
  • 1089bfab1 Update siso_version to 8629cde6728d25cde0f6fc1e6ae6b5886e0ebe41
  • b5b3947e6 Roll third_party/clang-format/script/ c2725e062..08cce2b81 (4 commits)
  • 393b3b71e Roll base/allocator/partition_allocator/ 8013b1e0c..fafdd4c9f (16 commits)
  • 067b877a1 Roll third_party/fast_float/src/ cb1d42aaa..05087a303 (178 commits)
  • b22924e7d Roll third_party/highway/src/ 84379d1c7..2607d3b5b (227 commits)
  • 2ced62c09 Roll third_party/libunwind/src/ 6ca46ff28..71192be15 (5 commits)
  • 9e85458bd Roll tools/win/ bfff5550e..d16e6b55b (1 commit)
  • 5e5ca5c02 Roll goldctl from 308286ffe9c4 to 745819ef1cfa