Skip to content

v1.2.0

Compare
Choose a tag to compare
@adamjs adamjs released this 29 Oct 19:37
· 23 commits to master since this release

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