Skip to content
Compare
Choose a tag to compare

Website | Read the Docs | Join our Discord! | Browse C/C++ API | Follow on Twitter

Ultralight v1.2.1 stable is now available!

This incremental maintenance release contains the following changes:

  • Improve anti-aliased font rendering in CPU renderer (especially when compositing brightly-colored fonts against dark or transparent backgrounds).
  • Fix issue with transparency in CPU renderer (alpha channel was not cleared properly during certain painting operations).
  • Fix image scaling issue in CPU renderer.
  • Fix memory leak in frame loader.
  • Fix memory growth issue with large, shortly-lived images.
  • Fix issue with mouse cursor not being set properly on mouse enter on Windows.

💡 'Min' Packages: We've included a reduced-size build of Ultralight in this release (those ending in -min)-- these packages are smaller in size (20MB smaller on Windows) and have JavaScript JIT, WebAssembly, and JavaScript Intl features disabled.

💬 Discuss this release on Discord!

📚 See our porting guide if you're migrating from v1.1

Compare
Choose a tag to compare

Website | Read the Docs | Join our Discord! | Browse C/C++ API | Follow on Twitter

Ultralight v1.2.0 stable is now available!

This new release includes the following major changes:

  • New CPU Renderer (easier to integrate into games / dynamic textures)
  • Updated to latest WebKit
  • Improved rendering accuracy
  • Better HTML5/CSS/JS platform support
  • Improved performance
  • Decreased runtime memory usage

💡 'Min' Packages: We've included a reduced-size build of Ultralight in this release (those ending in -min)-- these packages are smaller in size (20MB smaller on Windows) and have JavaScript JIT, WebAssembly, and JavaScript Intl features disabled.

💬 Discuss this release on Discord!

📚 See our porting guide if you're migrating from v1.1

What's New?

New Website and Branding

Our website got a facelift for the new release, check it out here.

We're Now on Discord!

We're now on Discord-- come chat with us about the library, ask questions, and share awesome projects!

New CPU Renderer

To make it easier to integrate Ultralight into games and other environments, we've added a new pure-CPU backend.

This new renderer can render HTML to a pixel buffer (optionally provided by you) using an SIMD-accelerated CPU rendering pipeline. Paths, gradients, and patterns in this mode are rasterized using Blend2D's high-performance JIT compiler.

Bindings for C#, Java, Rust, and more

Some awesome members of our community have ported Ultralight to other languages! Give these projects some love-- many of the maintainers hang out in Discord.

Improvements for Games

Many users have expressed desire to integrate Ultralight into games so we've updated our features and API to match!

We now offer an in-depth game integration guide and improved our API to make the integration process as easy as possible. (PS, we're porting Ultralight to Xbox, PS4, and more, contact us if you're interested!)

Better C API Coverage

Ultralight's offers a C++ API and a separate C API (available in <Ultralight/CAPI.h> and <AppCore/CAPI.h> respectively). This C API has now been improved to offer 100% coverage of the functionality available in our main C++ API.

New OpenGL Integration Sample

To better showcase the new CPU renderer we've created a new, OpenGL-based cover-flow browser sample. This sample demonstrates how to use the new Surface API with an OpenGL PBO for low-latency, DMA transfer to a GPU texture.

gl_sample1

Future Work

We're already hard at work on the next major branch (1.3), here's a sneak peek at a couple of our priorities for the next release:

  • Multi-window and multi-monitor support
  • HTML5 platform improvements (Video and Audio support, CSS filters, SVG filters, SVG stroke dashed array, dashed borders, JS dialogs)
  • Windowing improvements in AppCore (borderless windows, drag handles, app icons, context menus, notifications, and more)
  • Multi-process API (for View/Renderer crash isolation and 32-bit host communication)
  • DOM Manipulation API (modify DOM and hook DOM events from C/C++)

Changelog for 1.2.0

  • Updated to latest WebKit
    • Integrated latest updates (WebKit 608.3.10.10.1 / Safari 13.0.3)
    • Added support for WebSockets over SSL
    • Added support for WebAssembly
    • Fixed several flexbox layout bugs
  • Improved HTML5 platform support
    • Improved SVG support
    • Improved HTML5 canvas support
    • Added support for IndexedDB
    • Added support for <select>
    • Added support for <input type="range">
    • Added support for <progress>
    • Added support for <a target="_blank"> and window.open()
  • Sharper rendering at all DPIs
    • Improved glyph compositing (hinting and gamma are now user-configurable)
    • Improved pixel-snapping of various borders
    • Improved hairline stroke rendering
  • Better JavaScript performance
    • Enabled FTL JIT for faster JavaScript performance
    • Enabled Riptide GC for lower-latency collection
  • Added accelerated CPU renderer
    • Implemented an additional SIMD-accelerated CPU rendering backend
    • Can paint directly to a user-supplied BGRA32 pixel-buffer
    • Useful for integrating into games or environments with limited GPU
  • Decreased memory usage
    • Significantly decreased memory usage
    • Added API to dump memory statistics
  • Other improvements
    • Added support for user-selection, cut, copy, and paste (new Clipboard API)
    • Expanded C API support (we now expose all the Platform callbacks).
    • Fix rendering issues with nested scrolling containers and iframes.
    • Improved SSL certificate verification, uses bundled CA cert file (from Mozilla).
    • Exposed network errors to LoadListener API
    • Improved cursor support in AppCore
    • Reduced ICU data size
Compare
Choose a tag to compare

v1.2.0-beta.2

Pre-release
Pre-release

Website | Read the Docs | Join our Discord! | Support Forum | Browse API | Follow on Twitter

Ultralight v1.2.0 is now ready for beta testing!

Please see our porting guide if you're migrating from v1.1.

This major update integrates latest changes from WebKit, improves upon a range of rendering issues, adds a new pure-CPU renderer for easier usage in games and limited-GPU environments, and offers improved performance and decreased runtime memory usage.

Note: no size optimizations have been performed on binaries yet, expect additional improvements for the final stable release

Discuss this release in Discord!

Changelog for 1.2.0

  • Updated to latest WebKit
    • Integrated latest updates (WebKit 608.3.10.10.1 / Safari 13.0.3)
    • Added support for WebSockets over SSL
    • Added support for WebAssembly
    • Fixed several flexbox layout bugs
  • Improved HTML5 platform support
    • Improved SVG support
    • Improved HTML5 canvas support
    • Added support for <select>
    • Added support for <input type="range">
    • Added support for <progress>
    • Added support for <a target="_blank"> and window.open()
  • Sharper rendering at all DPIs
    • Improved glyph compositing (hinting and gamma are now user-configurable)
    • Improved pixel-snapping of various borders
    • Improved hairline stroke rendering
  • Better JavaScript performance
    • Enabled FTL JIT for faster JavaScript performance
    • Enabled Riptide GC for lower-latency collection
  • Added accelerated CPU renderer
    • Implemented an additional SIMD-accelerated CPU rendering backend
    • Can paint directly to a user-supplied BGRA32 pixel-buffer
    • Useful for integrating into games or environments with limited GPU
  • Added support for UWP/Xbox
    • Can be used to target Windows Store apps (Windows 10, HoloLens, Xbox One)
    • (Contact us if you are developing with the Xbox toolchain)
  • Decreased memory usage
    • Significantly decreased memory usage
    • Added API to dump memory statistics
  • Other improvements
    • Added support for user-selection, cut, copy, and paste (new Clipboard API)
    • Expanded C API support (we now expose all the Platform callbacks).
    • Fix rendering issues with nested scrolling containers and iframes.
    • Improved SSL certificate verification, uses bundled CA cert file (from Mozilla).
    • Exposed network errors to LoadListener API
    • Improved cursor support in AppCore
Compare
Choose a tag to compare

We're excited to announce our latest stable release, v1.1.0!

Links

What's New?

New Quick Start Tutorial

Building a desktop app? Get started in as little as 5 minutes with our new Quick-Start Tutorial

New Docs

Need help getting started? Want to integrate Ultralight into a game? Check our new Docs Website.

New Samples

All of the samples included in the SDK have been updated with new visuals and documentation.

New Compositor

The renderer/compositor back-end has been redesigned for more fluid CSS animations and transitions. This gives a noticeable performance boost on pages with complex CSS.

Commercial Licensing

We now offer commercial licensing options for Ultralight! Check out our website for more info.

Deprecating 32-bit Support

We will no longer be supporting 32-bit (x86) since upstream JavaScriptCore has dropped support. On the upside, this change will give a slight performance boost on 64-bit.

Changelog

This release brings many important stability, rendering, performance, and memory usage improvements to the library. Notable improvements include:
Rendering
  • Added CSS 3D / perspective transforms
  • Accelerated CSS transforms / transitions via new compositor
  • Improved Font Hinting and CJK Font support
  • Fixed many CSS / painting glitches (backgrounds, clips, transitions, etc.)
  • Made rendering pipeline sRGB-aware and gamma-correct
  • Improved scrollbar theming and sub-frame scrolling
  • Added support for checkbox, text input, radio buttons
  • Added support for radial gradients
  • Improved SVG Path stroke/fill rendering
  • Accelerated path rendering via MSAA
  • Enabled primitive Canvas API support (filled/stroked paths only)
  • Improved image scaling and memory usage for very large images
JavaScript
  • Fixed GC crash in pages with heavy JavaScript
  • Enabled DFG JIT for faster performance with long-running scripts
  • Enabled ES6 Module support
  • Enabled bmalloc slab allocator on all platforms
  • Reduced initial memory usage and heap scaling
Platform / Drivers
  • Added DirectX 12 driver support (experimental in AppCore repo)
  • Fixed rendering glitches on macOS/Metal
  • Added triple-buffering to macOS/Metal driver, improved performance
  • Accelerated View/Window resizing
  • Improve rendering with fractional DPI scales
  • Improved tab key handling (tab navigation works correctly now)
  • Enabled CPU-only WARP fallback in Windows/D3D11 driver
  • Fixed crash during App destruction on Linux
  • Added native Linux font loader (uses FontConfig)
  • Made it easier to bundle shared libs on Linux by having the rpath search the executable path first
  • Fixed crash when creating an App on Windows 7 platform
  • Fixed issues with tracking mouse during drag operation
Debugging / Profiling
  • Added Web Inspector (useful for debugging JS / CSS locally)
  • Added Config option to force repaints (for debugging GPUDriver)
  • Debug symbols are now available for the WebCore and AppCore modules for every build/commit as part of our continuous delivery system.