5.9.0
·
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
7191to7841.
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-distproject 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 usegn-distrather than outdated distro packages of GN.
Scripting to build GN from source previously included in pypdfium2's setup has moved togn-dist.
Inbuild_native.py, patches for legacy GN are still included and enabled by default for now, but you can pass--no-legacy-gnto 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_dispatchandworkflow_callinputs using YAML anchors & aliases (available on GHA since 09/2025). - Replaced
benc-uk/workflow-dispatchaction 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).
- Deduplicated
- 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 remainmara004'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.0073a8730Add another note to the changelogfbcf26cebulid_native: make--version mainwork (in gcc mode)22530e39Prepare changelog for next release3628a5a0fix typo 'pouplar' (to 'popular') (cf. #436)1838acb1build_native.py: ack//build/toolchain/linux/unbundle6570b33bbuild_native: cherry-pick openjpeg security fixce1f0f77android: set use_mold to false53c58228justfile: open browser in background71568ff6AutoCloseable style nitaf847562correction: negative crop does not actually workf729f447pyproject.toml: align order of commented-out system libs2044a804Make autoflake happy1da966ecDrop gn_build.patcha6d1ee6acibw/loongarch64: fix GN version9cae361aImprove gn-dist integrationca980469build_toolchained: rework GN task, call honor_gn_dist()767bd0f9Bring recent GN to sbuild/sbuild_native workflowsababbbd6cibw: move down gn-dist handlers57f496cdcibw: spell out list of CPUs instead of using|| true96f527b7cibw: fix loongarch64 not getting gn_dist binary4cb251eeUse gn-dist (#432)65641ce4Bump SBUILD_NATIVE_PIN to 78417febaf1fbuild_native: minor optimization166633dfBump SBUILD_NATIVE_PIN to 7835413d13b6sbuild update instructions: mention CIBW workflow6015a0cfci: deduplicate inputs, replacebenc-uk/workflow-dispatchwith reusable workflows (#431)c4a186f6PdfPage.render(): acknowledge negative cropc08ab357main.yaml: add taskb830eeebnit: fix a minor whitespace inconsistency79255e61Polish req/setup.txtea71a567CLI: improved disclaimer64691b9eci: always update pip firstd6abcb1fBump SBUILD_NATIVE_PIN to 78312ad0b232Revert dubious DEBUG_AUTOCLOSE check15ade1dfRename cibw_class to cibw_os304c2edcci: deduplicate cibw, sbuild and sbuild_native workflows using matrices (#430)23716a59Update static clang again62d1a72dSet use_cxx23 to False in build config84ebcbdareadme: add harfbuzz (and simdutf) to dependency lists5c8995d9Fix musl_fix_libclang_rt_finder patch3c7d86f7build_native: style nitf23a93e0pyproject.toml: use --no-legacy-gn in cibw configd40c52c6Make legacy GN patches opt-outcf669d96Update GN version (source build fallback)5be6bf77Bump SBUILD_NATIVE_PIN to 782823e6388fcibw: on linux (glibc) with static clang, use the vendored libc++ (#429)ba746a8fOpt for the much leaner libpng ppc64 fix after allf4af8b67build_native: update pdfium from 7191 to 7827 (#428)6082a1caCI: update cibuildwheel python version alsof22d80cbCI: reduce number of python versions to test009f1999CI: Add and update to Python 3.14b286844dSlightly 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 singleton1029a965bCreate FDPFPageObj_AddExistingMark()7e1dd12c2Rename core/fxge/apple/ files to match their classes9bfb3a58aIntroduce CFX_DIBitmap::PopulateFromSpan() and PopulateFrom1bppSpan()00b52f79bMove font substitution arrays and helpers to CFX_SubstFont54f0e7ac4Make FX_Random::Fill() the only entry point to FX_Random.0a23e6f43Use slightly better random numbers for GenerateFileId().bea414c80Remove some kTable* constants from the global namespace.994e1f365Tidy CPDF_FontSubsetter1178e9ae6Move TT Name Table parsing down to fxge/ layer.27701c3bbMove guts of CFX_CTTGSUBTable creation to CFX_Font.1efc5bb8dClean up legacy CFX_ prefixes and move font table parser108063f61Move CFX_CTTGSUBTable to core/fxge2a6e4f02eRemove obsolete import of //build/config/chromeos/ui_mode.gni2f8e2ce0dAdd FPDFTextObj_SetFontSize() public APIa5dce0851Add CFX_Font::GetCharBBox() helper methodb3a943e3dEncapsulate more of CFX_Face in CFX_Font498e8ddb3Add still more fontations equivalents to cfx_face.cpp4daa8ec3aContinue adding fontations equivalents to cfx_face.cppcc5fcec45Add coverage for invalid bfchar CIDs77f980f7fUse GetFileContents() to simplify fx_skrifa_unittest.cpp8a52b4df0Simply rust Slice construction in CFX_Face.5c422dfb1Add fontations equivalent for CFX_Face::GetCharCodesAndIndices().f0393b98fRoll Depot Tools from 64b2927117d0 to ed3a6fdd519a (54 revisions)6308a8b36Add fontations calls and checks to CFX_Face::GetGlyphBBox()c291784f6Add additional Fontations calls to CFX_Face.630e0b8d1Add fontations code for CanEmbed().204bd1660Add Fontations support for CFX_Face::GetOs2CodePageRange().000a55e9eCall skrifa APIs in parallel in CFX_Face::LoadGlyphPath().3fbf45d47Fix missing use of fontmetrics when checking skia bounding boxes.ba3a65ac5Remove isolate argument from JSGetObject().29dcd7e9cRename CFX_V8 to CFX_IsolateWrapper5d170ba40Refactor dynamic property adapters to avoid nested ifs.51a7cf784Use v8::Local<> in DynPropGetterAdapter()52eaf3272Rename CidSet enum entries8a02e3f08Collapse std::unique_ptrv8::Global to v8::Global in XFA.11439fe4cRemove CFXJSE_Value wrapper in favor of v8::Globalb66c914fbFix width calculation under skia in CFX_Face.ceb1b50ffMake CJBig2_GRDProc::DecodeArithOpt3() templated78cd1a294Make PDF_ENABLE_SKIA_TYPEFACE_CHECKS a GN build argument.efe3f3028Add missing config to //testing:test_support targete30fc3988Fix cffl_formfield.h reference in some commentsa8814376bReplace some static_casts with fxcrt::to_underlying()276f8f0bdRemove dead code from CFXJSE_Value.63d9c7846Do not access form_fill_env_ until after last re-entrant JS call.65c78d072Patch CVE-2026-6192 in libopenjpeg49c25b603Make equivalent Skia calls in CFX_Face under Fontations builds.09704940dVerify document in CFXJSE_Engine::ToXFAObject()8542da7f2Roll Zlib from 89921383f1f5 to 5c1dfd53066b (1 revision)6b69de71dRoll Memory Tools from b635f27e9323 to 66b0df34a721 (3 revisions)55f03afc8Do line fetching inside CJBig2_Image in bulkc9513f398Add CJBig2_Image::stride32()fa5db8d55Fix variants of prior CJS_Field::set_display() issue.937e95063Add big scary term "Reentrant" to fxjs methods that enter JS.de011a269Make several CJBig2_Image methods private9f6089d4dAvoid order-of-evaluation issues in CJS_Field::set_display().159b66453Encode property names when generating a page.2d2d4fabdGit ignore .jetskicli files.9095044e2Roll third_party/skia/ 163dfdf50..d10ea850c (329 commits; 49 trivial rolls)ef2d0f9c5Move fx_dib.h into namespace fxge7d87ed1f2Use GetWritableScanline() in more places inside CFX_DIBitmap423b6b376Roll third_party/cpu_features/src/ 936b9ab55..d3b2440fc (88 commits)3f09d85adRoll third_party/nasm/ 452528587..358842b6b (507 commits)9c682beafRoll abseil, android_ndk, build, buildtools, clang, libc++, and rust362640c04Rename array name in CRYPT_SHA1Finish()adc87eca6Roll third_party/libpng/ 367bb5ca4..8a5b4ace0 (1 commit)e39b9c0e9Cache data size in CJBig2_Image012b9390dMark CFX_DIBBase::FlipImage() as Windows / XFA-only8ec61de5aChange FXDIB_ALPHA_MERGE() from a macro to a function1e0bc3f15Rename functions in fx_crypt.cpp to follow UpperCamelCased4380f36cRename SHA functions to follow UpperCamelCase9ef2ca7d9Upgrade to lcms 2.192f77b38feRename JBig2 files to have lower case, snake_case names6845db4c1Add FxDibTest.AlphaMergef65c52aacRoll Catapult from 7343182d94b7 to 9fd976b2695e (71 revisions)50fd77b49Roll Code Coverage from f9e72c2a3ad1 to 74d04576e893 (4 revisions)260318838Make some fxge code Windows / AGG-onlyf8cec29fcFold CFX_DIBitmap::ConvertBGRColorScale() into ConvertColorScale()97ac10a61Simplify CFX_DIBitmap::ConvertColorScale() and ConvertBGRColorScale()041bf3782Make CFX_RenderDevice::Get{Horz,Vert}Size() Windows-only8c9ab07d4Remove more CFX_RenderDevice getters21c5df09bRemove RenderCapAlphaPath()8197a684bRoll third_party/harfbuzz/src/ a243dcb5c..e6741e220 (406 commits)2e0601854Roll third_party/harfbuzz/src/ 4fc961392..a243dcb5c (261 commits)518d500c0Clarify FPDF_NewXObjectFromPage() return value's lifetimebf13a74baUpdate gn_version to 1740f5c25bcac5a650ee3d1c1ec22bfa25fcd75658a1b4ad2Clarify C++ standard in .clang-format096d774abCherry-pick openjpeg changes to speed up jpeg2000 decoding on arm374edcd2bFold 0035-opj_image_data_free.patch into 0022-jp2_apply_pclr_overflow.patch4d59a7129Persist FPDFPage_InsertObjectAtIndex() ordering on save11b7e080aRename AdobeCMYK_to_sRGB() and AdobeCMYK_to_sRGB1()5d0010027Roll v8/ f9659283a..8e10f842e (749 commits; 1 trivial rolls)180b3353aRoll third_party/llvm-libc/src/ 2a826f2fd..ada036045 (124 commits)eab440015Roll third_party/brotli/ 8e1083278..aaafc7036 (1 commit)2bc6a5b1cReplace some char pointers with ByteStrings in embedder testscde520d12[v8] Migrate from deprecated setter/definer callback signaturesdd02d6dc6Roll third_party/freetype/src/ 99b479dc3..6d9fc45fc (39 commits)1089bfab1Update siso_version to 8629cde6728d25cde0f6fc1e6ae6b5886e0ebe41b5b3947e6Roll third_party/clang-format/script/ c2725e062..08cce2b81 (4 commits)393b3b71eRoll base/allocator/partition_allocator/ 8013b1e0c..fafdd4c9f (16 commits)067b877a1Roll third_party/fast_float/src/ cb1d42aaa..05087a303 (178 commits)b22924e7dRoll third_party/highway/src/ 84379d1c7..2607d3b5b (227 commits)2ced62c09Roll third_party/libunwind/src/ 6ca46ff28..71192be15 (5 commits)9e85458bdRoll tools/win/ bfff5550e..d16e6b55b (1 commit)5e5ca5c02Roll goldctl from 308286ffe9c4 to 745819ef1cfa