• 33.0.0_Release 637e1ceec2

    Moonchild released this 2024-01-30 11:25:05 +00:00 | 6 commits to release since this release

    This is a new milestone release. It involves over 250 commits, of which the most important ones are highlighted here.

    New features:

    • Implemented a restricted version of the asynchronous clipboard API (navigator.clipboard). This API is restricted to writing only for obvious security considerations. It supports both plaintext and the standard DataTransfer methods. We did not implement the reinvented wheel concept of ClipboardItem objects.
    • Implemented support for SHA-2 (SHA-256/SHA-512/etc.) signatures for OCSP stapled responses.
    • Implemented an option (Found in Preferences -> Content -> Media tab (new this version)) to restrict DOM full-screen mode to the existing browser window.
    • Implemented several options in a new preferences tab (Preference -> Privacy -> Tracking) to allow users to more easily control several privacy-impacting features, namely poisoning of canvas data (to prevent fingerprinting), and enabling of Performance observers (a developer feature) that some websites rely on for their operation.
    • Implemented PromiseRejectionEvent. Although this is rarely actually used, some common JS libraries (you know who you are!) use it as a feature level canary and start loading (broken!) Promise shims if it is not found, causing compatibility issues and broken websites due to the shims.

    Fixes:

    • Aligned microtasks and Promises scheduling with the current spec and expected behavior.
    • We now no longer send click events to top levels of the document hierarchy when using non-primary buttons (use auxclick, instead, to capture these events).
    • Greatly improved the performance of box shadows.
    • Greatly improved the performance of file/data uploads over HTTP/2 (most of the secure websites out there).
    • Fixed several issues related to focus and content selection.
    • Fixed issues with the use of focus-within caused by unexpected processing of DOM events.
    • Fixed an issue with CSP not behaving as-expected when using importScripts(), and fixed a number of additional CSP-related issues.
    • Fixed a web compatibility issue with CORS preflights not sending the original request's referrer policy or referrer header.
    • Fixed a spec compliance issue with StructuredClone.
    • Fixed a crash due to clamping code introduced for SetInterval and SetTimeout timers.
    • Fixed crashes when dynamic imports are canceled (e.g. by navigation).

    Other changes:

    • Changed <input type=file> to now have its .files property be writable following a spec change and recommendation.
    • We are now requiring and building against the C++17 language standard.
    • Updated the in-tree ffvpx lib to 6.0.
    • Added a preference to allow users to completely disable reporting of CSP errors to webmasters. Using this is strongly discouraged as it will provide essential troubleshooting information to webmasters setting up CSP, and does not pose a privacy issue, but for those who really want it, it can now be fully disabled. The preference is security.csp.reporting.enabled.
    • Updated the IntersectionObserver interface to now also accept documents for the observer root instead of only HTML elements.
    • Cleaned up various bits of code surrounding GMP, memory allocation, system libraries, vestigial Android code, freetype2 and developer tools.
    • Improved efficiency of handling D3D textures.
    • Added initial and experimental Mac PowerPC and Big Endian support.
    • Changed the behavior of hung scripts. We now automatically terminate them instead of presenting the user with a dialog box (which may or may not show in a reasonable time if the browser is too busy trying to process the hung script). If you prefer the old behavior, uncheck the box "Automatically stop non-responsive scripts" in Preferences -> Content -> General
    • Security issues addressed: CVE-2024-0746, CVE-2024-0741, CVE-2024-0743 DiD, CVE-2024-0750 DiD, and CVE-2024-0753.
    • UXP Mozilla security patch summary: 3 fixed, 2 DiD, 12 not applicable.
    Downloads
  • 32.5.2_Release ae12e17cd3

    Moonchild released this 2023-12-21 13:07:34 +00:00 | 35 commits to release since this release

    This is a bugfix and security update.
    Merry Christmas and Happy Holidays to all!

    Changes/fixes:

    • Removed the standard Twitter/X user-agent override because they decided to block us on it.
    • Added preferences for the user to control whether or not the tab page title should be included in the window title or not. In Private Browsing mode, the default is now to not show the title in the window. This was done to avoid potential leakage to system logs (e.g. GNOME shell logs or Windows event logs) of websites visited through the recorded window title. The new preferences are privacy.exposeContentTitleInWindow and privacy.exposeContentTitleInWindow.pbm for normal mode and Private Browsing mode, respectively.
    • Fixed several crashes in DOM and relating to dynamic JavaScript module imports.
    • Removed a restriction on Fetch preflight redirects, following a spec update.
    • Improved the handling of web workers if they get aborted mid-action.
    • Security issues addressed: CVE-2023-6863, CVE-2023-6858 and several others that do not have a CVE number.
    • UXP Mozilla security patch summary: 4 fixed, 2 DiD, 1 rejected (which was DiD at best), 1 postponed (low risk), 22 not applicable.
    Downloads
  • 32.5.1_Release 76f69ecaaa

    Moonchild released this 2023-11-28 07:40:19 +00:00 | 39 commits to release since this release

    This is a minor development and security update.
    Important: as of this version, our beta FreeBSD binaries require at least FreeBSD 13.

    Changes/fixes:

    • Restricted protocol fallback for TLS. Pale Moon no longer (by default) allows TLS 1.3 to fall back to earlier protocol versions during the initial handshake.
    • Reverted the addition of browser.bookmarks.openInTabClosesMenu due to behavioral issues with menus.
      If you desire the intended behavior, please use an extension instead.
    • We no longer support the data: protocol inside SVG's <use> statements.
    • Enabled more validation/error checking for WebGL on Windows to prevent potential crashes.
    • Improved secure context checking for iframes.
    • Fixed the handling of relative paths in URLs starting with multiple forward slashes.
    • Security issues addressed: CVE-2023-6204, CVE-2023-6210, CVE-2023-6209 and CVE-2023-6205 DiD
    • UXP Mozilla security patch summary: 3 fixed, 1 DiD, 14 not applicable.
    Downloads
  • 32.5.0_Release-SunOS b9488c0c32

    Moonchild released this 2023-11-06 14:04:37 +00:00 | 43 commits to release since this release

    SunOS release of 32.5.0

    Separate release for using updated UXP as its state for SunOS was broken with the initial 32.5.0 release commits.

    Downloads
  • 32.5.0_Release 6a7ff6a825

    Moonchild released this 2023-10-30 18:12:59 +00:00 | 44 commits to release since this release

    This is a major development and security update. And a Happy Halloween to everyone who celebrates! 🎃👻🦇

    Changes/fixes:

    • Added an initial implementation of the ReadableStreams API, improving web compatibility with sites that apparently use this API in utilitarian fashion.
    • Added support for transparency in WebM videos for the edge case of using <video> elements for transparent animated images. Major caveat: this will massively impact performance of video playback if an alpha channel is present in the video.
    • Added support for crypto.randomUUID to allow website scripting to generate random UUIDs (universally unique identifiers) through the WebCrypto interface.
    • By user request, added a preference browser.bookmarks.openInTabClosesMenu (default true) to allow users to configure if they want to keep the bookmarks menu open if they open bookmarks from it in a new tab (by middle-clicking or Ctrl-clicking). The default behavior is to close the bookmarks menu like any other menu when an option in it is clicked.
    • Removed the user-agent override for Netflix, since they have stopped supporting the Silverlight browser plugin. Pale Moon no longer has a way to provide Netflix DRM-controlled playback with them dropping it, so there is no longer a reason to try and force compatibility.
    • Updated the user-agent override for Spotify. While it is possible to use the website with this, it suffers from the same DRM issue and not all media will be playable (only non-encumbered media can be played in Pale Moon like podcasts). Your mileage may vary.
    • Implemented timer nesting and clamping for workers, preventing timer hangs on bad website code.
    • Improved handling of drawing SVG images on canvases without explicit width or height attributes. We now follow the css-sizing-3 Intrinsic Sizes spec.
    • Improved performance of our memory allocator.
    • Updated libvpx to 1.6.1.
    • Cleaned up and updated some media playback code.
    • Removed the inclusion of GMP (Gecko Media Plugin) support from Pale Moon, as it was only in use for EME/DRM and WebRTC, neither of which we support.
    • Removed the last vestiges of EME/DRM code from UXP, since this will never be supported in any application building on it due to the media industry's draconic policies around FOSS.
    • Removed simd.js, moving actually used SIMD handling to C++.
    • Removed the use of libav in our source, replacing its supply of FFT with the equivalent from FFMpeg.
    • Fixed potential type confusion in IonMonkey due to 3-byte opcodes.
    • Fixed an issue with tooltips persisting even if the browser window would have lost focus.
    • Fixed PerformanceObserver navigation and resource timing (default disabled for privacy); our implementation now fully passes conformance tests.
    • Fixed an issue where top-level SVG images would not be correctly clipped by positioned elements, giving the impression of wrong z-ordering as the SVG would overlap other elements.
    • Dev: Updated setInterval to fall back to 0 if no duration is supplied.
    • Dev: Updated ResizeObserver to a recent spec change, now returning an array of results for borderBoxSize and contentBoxSize instead of an object.
    • Dev: Updated Intl.NumberFormat and DefaultNumberOption() to follow spec updates. Most importantly for web compatibility, we now allow the "maximumFractionDigits" option in Intl.NumberFormat to be less than the default minimum fraction digits for the chosen locale, following the general consensus in TC39 around this issue.
    • Increased leniency (removed upper limit) of GLSL versions as they tend to be fully backwards compatible.
    • Fixed various crashes.
    • Added a safeguard to the sec-gpc header (Global Privacy Control) so it cannot be inadvertently overwritten.
    • Security fixes: addressed CVE-2023-5722, CVE-2023-5723, CVE-2023-5724, CVE-2023-5727 and several other issues without a CVE number assigned to them.
    • UXP Mozilla security patch summary: 6 fixed, 2 DiD, 19 not applicable.
    Downloads
  • 32.4.1_Release 791a7d2d50

    Moonchild released this 2023-10-02 20:29:22 +00:00 | 58 commits to release since this release

    This is a bugfix and security update.

    Changes/fixes:

    • Fixed an issue in BigInt typedArray costructors.
    • Added some safety checks for Performance Observers.
    • Fixed JSON BigInt regressions.
    • Fixed missing BigInt increment/decrement operations.
    • Added WASM sign extension opcodes.
    • Fixed an issue with dead Promise wrappers in JavaScript DiD
    • Fixed an issue with Alternative Services DiD
    • Fixed an issue with libvpx (address CVE-2023-5217) DiD
    Downloads
  • 32.4.0.1_Release f8b690cff9

    Moonchild released this 2023-09-13 08:32:57 +00:00 | 60 commits to release since this release

    This is a point release update to address a critical security vulnerability.

    Downloads
  • 32.4.0_Release 3ac20629e3

    Moonchild released this 2023-09-04 20:17:17 +00:00 | 61 commits to release since this release

    This is a major development update, further improving web compatibility and fixing bugs.

    Changes/fixes:

    • Implemented the BigInt primitive type for JavaScript. See implementation notes.
    • Implemented Big(U)Int64 array support.
    • Implemented ergonomic brand checks for JavaScript class fields.
    • Aligned the Performance API with the Timeline v2 spec.
    • Aligned the handling of flex/grid percentages resolving against the parent with other browsers. See implementation notes.
    • Added or updated several user-agent overrides for problematic websites.
    • Added 2 preferences to allow users to disable CSS animations and transitions. See implementation notes.
    • Improved compatibility with MacOS 14.
    • Fixed an important, intermittent JavaScript crash related to garbage collection.
    • Fixed several crashes.
    • Fixed several debug build related issues.
    • Fixed an issue building on SunOS related to the spelling library.
    • Developer: Added ASan support for building with MSVC.
    • Added the .xll file extension to the executable extensions list.
    • Security issues addressed: several potential security issues that do not have a CVE number. DiD
    • UXP Mozilla security patch summary: 1 fixed, 3 DiD, 17 not applicable.

    Implementation notes:

    • The BigInt primitive (base number format) in JavaScript allows JavaScript to handle excessively large integers (whole numbers). This primitive is especially useful for specialized scientific applications that need very large yet accurate numbers, but has seen widespread adoption for an as of yet unknown reason as part of web frameworks, causing general web compatibility issues for Pale Moon when scripts expect BigInt support and instead have an error thrown. We have now implemented this primitive for use so we no longer have compatibility issues with these frameworks. It is still unknown why BigInt is in use there and for what.
      Critical note: BigInt might be tempting to consider for JS-backed cryptography but this is very ill-advised, as BigInt operations are, by their nature, not constant-time and allow timing and side-channel attacks.
    • Flex and grid item sizes in percentages would previously be resolved against the parent like other elements, according to a very long-standing practice that stems from the Internet Explorer days. Mainstream browsers have, however, made an exception for flex items and grid items to no longer do this. We have now made the same exception for these types of elements which should solve layout issues on some websites (notably reserving too much space for items, often resulting in very large areas of whitespace or items being pushed out of view).
    • Two preferences were added (layout.css.animation.enabled and layout.css.transition.enabled) to allow users to completely disable CSS-based animations and transition effects. This was a request by users as both a performance and accessibility consideration. Please note that in some cases, disabling animations and transitions may have an impact on final web page layout, so you may run into some issues when disabling these animations and transitions as the web pages were designed to use them.
    Downloads
  • 32.3.0_Release 3fbde9b00d

    Moonchild released this 2023-07-11 12:22:21 +00:00 | 77 commits to release since this release

    This is a major development update, further improving web compatibility.

    Changes/fixes:

    • Added the (hidden) preference browser.history.menuMaxResults to allow users to control how many history entries are listed in the menu. Setting this to 0 will hide history menu entries altogether, and any positive number configures how many entries the entries are limited to. The default if not defined is 15.
    • Switched C++ language level used to C++14 on all platforms.
    • Web compatibility and scripting improvements:
      • Implemented geometry .from* static constructors for web compatibility.
      • Implemented partial support for CSS calc() in color keywords.
      • Implemented Array "find from last" feature (findLast and findLastIndex).
      • Implemented Object.hasOwn(object,property).
      • Implemented several additional Intl API methods and functions. This improves web compatibility with sites making use of things like hourCycle, advanced DateTimeFormat, Intl.Locale, and Intl as a constructor.
    • Cleaned up some unused code.
    • Removed support for Mozilla "experiment" type extensions.
    • Improved the JavaScript garbage collector's sweeping. This should fix a few intermittent crashes and improve performance.
    • Implemented some structural changes to the source to make future porting easier, and preparing for switching to C++17.
    • Removed handling of symlinks for directory linstings to prevent potential security issues by walking symlinks when uploading. This effectively reverts a change made in Firefox 50 where this functionality was introduced. A case of "Not such a good idea after all" ;-)
    • Updated the list of extensions on Windows treated as "executable".
    • Security issues addressed: CVE-2023-37208.
    • Made preparations for for requiring Authorization in CORS ACAH preflight.
      Since no browser honors this part of the spec at the moment this is left disabled until there is consensus among browsers.
    • UXP Mozilla security patch summary: 2 fixed, 2 rejected, 20 not applicable.
    Downloads
  • 32.2.1_Release 4907e1068f

    Moonchild released this 2023-06-12 17:50:00 +00:00 | 93 commits to release since this release

    This is a small bugfix and stability update.
    There were no applicable Mozilla security bugs this time around.

    Changes/fixes:

    • Fixed a crash in devtools in some OOM situations.
    • Fixed crashes when internal script execution was blocked by extensions.
    • Fixed crashes with WebComponents' ::slotted selector.
    • Disabled incremental cycle collector by default to avoid performance regressions.
    • Updated the default override for chase.com to work around issues.
    Downloads