diff --git a/examples/create-react-app/cra-go b/examples/create-react-app/cra-go new file mode 100755 index 0000000..ed29db7 Binary files /dev/null and b/examples/create-react-app/cra-go differ diff --git a/include/AppCore/App.h b/include/AppCore/App.h index cfb8b32..de5aa38 100644 --- a/include/AppCore/App.h +++ b/include/AppCore/App.h @@ -15,6 +15,7 @@ #include "Defines.h" #include #include +#include namespace ultralight { @@ -37,6 +38,36 @@ public: virtual void OnUpdate() {} }; +/// +/// App-specific settings. +/// +struct AExport Settings { + /// + /// The root file path for our file system. You should set this to the + /// relative path where all of your app data is. + /// + /// This will be used to resolve all file URLs, eg file:///page.html + /// + /// @note By default, on macOS we use the app bundle's @resource_path, + /// on all other platforms we use the "./assets/" directory relative + /// to the executable's directory. + /// +#ifdef __APPLE__ + String file_system_path = "@resource_path"; +#else + String file_system_path = "./assets/"; +#endif + + /// + /// Whether or not we should load and compile shaders from the file system + /// (eg, from the /shaders/ path, relative to file_system_path). + /// + /// If this is false (the default), we will instead load pre-compiled shaders + /// from memory which speeds up application startup time. + /// + bool load_shaders_from_file_system = false; +}; + /// /// Main application class. /// @@ -45,18 +76,29 @@ public: /// /// Create the App singleton. /// - /// @note You should only create one of these per application lifetime. - /// - /// App maintains its own Renderer instance, make sure to set your - /// Config before creating App. (@see Platform::set_config) + /// @param settings Settings to customize App runtime behavior. /// - static Ref Create(); + /// @param config Config options for the Ultralight renderer. + /// + /// @return Returns a ref-pointer to the created App instance. + /// + /// @note You should only create one of these per application lifetime. + /// + /// @note Certain Config options may be overridden during App creation, + /// most commonly Config::face_winding and Config::device_scale_hint. + /// + static Ref Create(Settings settings = Settings(), Config config = Config()); /// /// Get the App singleton. /// static App* instance(); + /// + /// Get the settings this App was created with. + /// + virtual const Settings& settings() const = 0; + /// /// Set the main window. You must set this before calling Run. /// @@ -117,4 +159,4 @@ protected: virtual ~App(); }; -} // namespace ultralight \ No newline at end of file +} // namespace ultralight diff --git a/include/AppCore/CAPI.h b/include/AppCore/CAPI.h index 747f67c..68a43b0 100644 --- a/include/AppCore/CAPI.h +++ b/include/AppCore/CAPI.h @@ -18,18 +18,19 @@ #if defined(__WIN32__) || defined(_WIN32) # if defined(APPCORE_IMPLEMENTATION) -# define AExport __declspec(dllexport) +# define ACExport __declspec(dllexport) # else -# define AExport __declspec(dllimport) +# define ACExport __declspec(dllimport) # endif #else -# define AExport __attribute__((visibility("default"))) +# define ACExport __attribute__((visibility("default"))) #endif #ifdef __cplusplus extern "C" { #endif +typedef struct C_Settings* ULSettings; typedef struct C_App* ULApp; typedef struct C_Window* ULWindow; typedef struct C_Monitor* ULMonitor; @@ -45,37 +46,73 @@ typedef enum { kWindowFlags_Maximizable = 1 << 3, } ULWindowFlags; +/// +/// Create settings with default values (see ). +/// +ACExport ULSettings ulCreateSettings(); + +/// +/// Destroy settings. +/// +ACExport void ulDestroySettings(ULSettings settings); + +/// +/// Set the root file path for our file system, you should set this to the +/// relative path where all of your app data is. +/// +/// This will be used to resolve all file URLs, eg file:///page.html +/// +/// @note By default, on macOS we use the app bundle's @resource_path, +/// on all other platforms we use the "./assets/" directory relative +/// to the executable's directory. +/// +ACExport void ulSettingsSetFileSystemPath(ULSettings settings, ULString path); + +/// +/// Set whether or not we should load and compile shaders from the file system +/// (eg, from the /shaders/ path, relative to file_system_path). +/// +/// If this is false (the default), we will instead load pre-compiled shaders +/// from memory which speeds up application startup time. +/// +ACExport void ulSettingsSetLoadShadersFromFileSystem(ULSettings settings, + bool enabled); + /// /// Create the App singleton. /// -/// @param config Configuration settings to use. +/// @param settings Settings to customize App runtime behavior. You can pass +/// NULL for this parameter to use default settings. +/// +/// @param config Config options for the Ultralight renderer. You can pass +/// NULL for this parameter to use default config. /// /// @note You should only create one of these per application lifetime. /// -/// App maintains its own Renderer instance, make sure to set your -/// Config before creating App. (@see Platform::set_config) +/// @note Certain Config options may be overridden during App creation, +/// most commonly Config::face_winding and Config::device_scale_hint. /// -AExport ULApp ulCreateApp(ULConfig config); +ACExport ULApp ulCreateApp(ULSettings settings, ULConfig config); /// /// Destroy the App instance. /// -AExport void ulDestroyApp(ULApp app); +ACExport void ulDestroyApp(ULApp app); /// -/// Set the main window. You must set this before calling ulAppRun. +/// Set the main window, you must set this before calling ulAppRun. /// /// @param window The window to use for all rendering. /// /// @note We currently only support one Window per App, this will change /// later once we add support for multiple driver instances. /// -AExport void ulAppSetWindow(ULApp app, ULWindow window); +ACExport void ulAppSetWindow(ULApp app, ULWindow window); /// /// Get the main window. /// -AExport ULWindow ulAppGetWindow(ULApp app); +ACExport ULWindow ulAppGetWindow(ULApp app); typedef void (*ULUpdateCallback) (void* user_data); @@ -87,52 +124,50 @@ typedef void /// @note This event is fired right before the run loop calls /// Renderer::Update and Renderer::Render. /// -AExport void ulAppSetUpdateCallback(ULApp app, ULUpdateCallback callback, - void* user_data); +ACExport void ulAppSetUpdateCallback(ULApp app, ULUpdateCallback callback, + void* user_data); /// /// Whether or not the App is running. /// -AExport bool ulAppIsRunning(ULApp app); +ACExport bool ulAppIsRunning(ULApp app); /// /// Get the main monitor (this is never NULL). /// /// @note We'll add monitor enumeration later. /// -AExport ULMonitor ulAppGetMainMonitor(ULApp app); +ACExport ULMonitor ulAppGetMainMonitor(ULApp app); /// /// Get the underlying Renderer instance. /// -AExport ULRenderer ulAppGetRenderer(ULApp app); +ACExport ULRenderer ulAppGetRenderer(ULApp app); /// -/// Run the main loop. +/// Run the main loop, make sure to call ulAppSetWindow before calling this. /// -/// @note Make sure to call ulAppSetWindow before calling this. -/// -AExport void ulAppRun(ULApp app); +ACExport void ulAppRun(ULApp app); /// /// Quit the application. /// -AExport void ulAppQuit(ULApp app); +ACExport void ulAppQuit(ULApp app); /// /// Get the monitor's DPI scale (1.0 = 100%). /// -AExport double ulMonitorGetScale(ULMonitor monitor); +ACExport double ulMonitorGetScale(ULMonitor monitor); /// -/// Get the width of the monitor (in device coordinates) +/// Get the width of the monitor (in device coordinates). /// -AExport unsigned int ulMonitorGetWidth(ULMonitor monitor); +ACExport unsigned int ulMonitorGetWidth(ULMonitor monitor); /// -/// Get the height of the monitor (in device coordinates) +/// Get the height of the monitor (in device coordinates). /// -AExport unsigned int ulMonitorGetHeight(ULMonitor monitor); +ACExport unsigned int ulMonitorGetHeight(ULMonitor monitor); /// /// Create a new Window. @@ -147,14 +182,14 @@ AExport unsigned int ulMonitorGetHeight(ULMonitor monitor); /// /// @param window_flags Various window flags. /// -AExport ULWindow ulCreateWindow(ULMonitor monitor, unsigned int width, - unsigned int height, bool fullscreen, - unsigned int window_flags); +ACExport ULWindow ulCreateWindow(ULMonitor monitor, unsigned int width, + unsigned int height, bool fullscreen, + unsigned int window_flags); /// /// Destroy a Window. /// -AExport void ulDestroyWindow(ULWindow window); +ACExport void ulDestroyWindow(ULWindow window); typedef void (*ULCloseCallback) (void* user_data); @@ -162,9 +197,9 @@ typedef void /// /// Set a callback to be notified when a window closes. /// -AExport void ulWindowSetCloseCallback(ULWindow window, - ULCloseCallback callback, - void* user_data); +ACExport void ulWindowSetCloseCallback(ULWindow window, + ULCloseCallback callback, + void* user_data); typedef void (*ULResizeCallback) (void* user_data, unsigned int width, unsigned int height); @@ -173,54 +208,54 @@ typedef void /// Set a callback to be notified when a window resizes /// (parameters are passed back in device coordinates). /// -AExport void ulWindowSetResizeCallback(ULWindow window, - ULResizeCallback callback, - void* user_data); +ACExport void ulWindowSetResizeCallback(ULWindow window, + ULResizeCallback callback, + void* user_data); /// /// Get window width (in device coordinates). /// -AExport unsigned int ulWindowGetWidth(ULWindow window); +ACExport unsigned int ulWindowGetWidth(ULWindow window); /// /// Get window height (in device coordinates). /// -AExport unsigned int ulWindowGetHeight(ULWindow window); +ACExport unsigned int ulWindowGetHeight(ULWindow window); /// /// Get whether or not a window is fullscreen. /// -AExport bool ulWindowIsFullscreen(ULWindow window); +ACExport bool ulWindowIsFullscreen(ULWindow window); /// /// Get the DPI scale of a window. /// -AExport double ulWindowGetScale(ULWindow window); +ACExport double ulWindowGetScale(ULWindow window); /// /// Set the window title. /// -AExport void ulWindowSetTitle(ULWindow window, const char* title); +ACExport void ulWindowSetTitle(ULWindow window, const char* title); /// /// Set the cursor for a window. /// -AExport void ulWindowSetCursor(ULWindow window, ULCursor cursor); +ACExport void ulWindowSetCursor(ULWindow window, ULCursor cursor); /// /// Close a window. /// -AExport void ulWindowClose(ULWindow window); +ACExport void ulWindowClose(ULWindow window); /// /// Convert device coordinates to pixels using the current DPI scale. /// -AExport int ulWindowDeviceToPixel(ULWindow window, int val); +ACExport int ulWindowDeviceToPixel(ULWindow window, int val); /// /// Convert pixels to device coordinates using the current DPI scale. /// -AExport int ulWindowPixelsToDevice(ULWindow window, int val); +ACExport int ulWindowPixelsToDevice(ULWindow window, int val); /// /// Create a new Overlay. @@ -241,82 +276,82 @@ AExport int ulWindowPixelsToDevice(ULWindow window, int val); /// @note Each Overlay is essentially a View and an on-screen quad. You should /// create the Overlay then load content into the underlying View. /// -AExport ULOverlay ulCreateOverlay(ULWindow window, unsigned int width, - unsigned int height, int x, int y); +ACExport ULOverlay ulCreateOverlay(ULWindow window, unsigned int width, + unsigned int height, int x, int y); /// /// Destroy an overlay. /// -AExport void ulDestroyOverlay(ULOverlay overlay); +ACExport void ulDestroyOverlay(ULOverlay overlay); /// /// Get the underlying View. /// -AExport ULView ulOverlayGetView(ULOverlay overlay); +ACExport ULView ulOverlayGetView(ULOverlay overlay); /// /// Get the width (in device coordinates). /// -AExport unsigned int ulOverlayGetWidth(ULOverlay overlay); +ACExport unsigned int ulOverlayGetWidth(ULOverlay overlay); /// /// Get the height (in device coordinates). /// -AExport unsigned int ulOverlayGetHeight(ULOverlay overlay); +ACExport unsigned int ulOverlayGetHeight(ULOverlay overlay); /// /// Get the x-position (offset from the left of the Window), in device /// coordinates. /// -AExport int ulOverlayGetX(ULOverlay overlay); +ACExport int ulOverlayGetX(ULOverlay overlay); /// /// Get the y-position (offset from the top of the Window), in device /// coordinates. /// -AExport int ulOverlayGetY(ULOverlay overlay); +ACExport int ulOverlayGetY(ULOverlay overlay); /// /// Move the overlay to a new position (in device coordinates). /// -AExport void ulOverlayMoveTo(ULOverlay overlay, int x, int y); +ACExport void ulOverlayMoveTo(ULOverlay overlay, int x, int y); /// /// Resize the overlay (and underlying View), dimensions should be /// specified in device coordinates. /// -AExport void ulOverlayResize(ULOverlay overlay, unsigned int width, - unsigned int height); +ACExport void ulOverlayResize(ULOverlay overlay, unsigned int width, + unsigned int height); /// /// Whether or not the overlay is hidden (not drawn). /// -AExport bool ulOverlayIsHidden(ULOverlay overlay); +ACExport bool ulOverlayIsHidden(ULOverlay overlay); /// -/// Hide the overlay (will no longer be drawn) +/// Hide the overlay (will no longer be drawn). /// -AExport void ulOverlayHide(ULOverlay overlay); +ACExport void ulOverlayHide(ULOverlay overlay); /// /// Show the overlay. /// -AExport void ulOverlayShow(ULOverlay overlay); +ACExport void ulOverlayShow(ULOverlay overlay); /// /// Whether or not an overlay has keyboard focus. /// -AExport bool ulOverlayHasFocus(ULOverlay overlay); +ACExport bool ulOverlayHasFocus(ULOverlay overlay); /// /// Grant this overlay exclusive keyboard focus. /// -AExport void ulOverlayFocus(ULOverlay overlay); +ACExport void ulOverlayFocus(ULOverlay overlay); /// /// Remove keyboard focus. /// -AExport void ulOverlayUnfocus(ULOverlay overlay); +ACExport void ulOverlayUnfocus(ULOverlay overlay); #ifdef __cplusplus } diff --git a/include/Ultralight/Bitmap.h b/include/Ultralight/Bitmap.h index 50ec8cc..cb17485 100644 --- a/include/Ultralight/Bitmap.h +++ b/include/Ultralight/Bitmap.h @@ -24,17 +24,33 @@ namespace ultralight { /// The various Bitmap formats. /// enum UExport BitmapFormat { - /// Alpha-channel only, 8-bits per channel (8-bits in total per pixel) - kBitmapFormat_A8, + /** + * Alpha channel only, 8-bits per pixel. + * + * Encoding: 8-bits per channel, unsigned normalized. + * + * Color-space: Linear (no gamma), alpha-coverage only. + */ + kBitmapFormat_A8_UNORM, - /// Red Green Blue Alpha, 8-bits per channel (32-bits in total per pixel) - kBitmapFormat_RGBA8 + /** + * Blue Green Red Alpha channels, 32-bits per pixel. + * + * Encoding: 8-bits per channel, unsigned normalized. + * + * Color-space: sRGB gamma with premultiplied linear alpha channel. + * + * NOTE: Alpha is premultiplied with BGR channels _before_ sRGB gamma is + * applied so we can use sRGB conversion hardware and perform all + * blending in linear space on GPU. + */ + kBitmapFormat_BGRA8_UNORM_SRGB, }; /// /// Macro to get the bytes per pixel from a BitmapFormat /// -#define GetBytesPerPixel(x) (x == kBitmapFormat_A8? 1 : 4) +#define GetBytesPerPixel(x) (x == kBitmapFormat_A8_UNORM? 1 : 4) /// /// @brief Bitmap container with basic blitting and conversion routines. @@ -58,7 +74,8 @@ class UExport Bitmap : public RefCounted { /// /// @return A ref-pointer to a new Bitmap instance. /// - static Ref Create(uint32_t width, uint32_t height, BitmapFormat format); + static Ref Create(uint32_t width, uint32_t height, + BitmapFormat format); /// /// Create a Bitmap with existing pixels and configuration. @@ -81,10 +98,20 @@ class UExport Bitmap : public RefCounted { /// raw pixels passed in as its own, but you are still /// responsible for destroying your buffer afterwards. /// + /// @param fixup_gamma Whether or not we should reinterpret the source + /// as an sRGB bitmap with premultiplied alpha applied + /// after the gamma function (typical of PNGs). We + /// expect all premultiplication to be applied before + /// the gamma function so we can blend properly in + /// linear space. Only valid for + /// kBitmapFormat_BGRA8_UNORM_SRGB. + /// /// @return A ref-pointer to a new Bitmap instance. /// - static Ref Create(uint32_t width, uint32_t height, BitmapFormat format, - uint32_t row_bytes, const void* pixels, size_t size, bool should_copy = true); + static Ref Create(uint32_t width, uint32_t height, + BitmapFormat format, uint32_t row_bytes, + const void* pixels, size_t size, + bool should_copy = true, bool fixup_gamma = false); /// /// Create a bitmap from a deep copy of another Bitmap. @@ -185,7 +212,7 @@ class UExport Bitmap : public RefCounted { /// /// @note Formats do not need to match. Bitmap formats will be converted /// to one another automatically. Note that when converting from - /// RGBA8 to A8, only the Red channel will be used. + /// BGRA8 to A8, only the Blue channel will be used. /// /// @param src_rect The source rectangle, relative to src bitmap. /// @@ -212,6 +239,24 @@ class UExport Bitmap : public RefCounted { /// virtual bool WritePNG(const char* path) = 0; + + /// + /// Make a resized copy of this bitmap by writing to a pre-allocated + /// destination bitmap. + /// + /// @param destination The bitmap to store the result in, the width and + /// height of the destination will be used. + /// + /// @param high_quality Whether or not a high quality resampling will be + /// used during the resize. (Otherwise, just uses fast + /// nearest-neighbor sampling) + /// + /// @return Whether or not the operation succeeded. This operation is only + /// valid if both formats are kBitmapFormat_BGRA8_UNORM_SRGB and + /// both the source and destination are non-empty. + /// + virtual bool Resample(Ref destination, bool high_quality) = 0; + protected: Bitmap(); virtual ~Bitmap(); diff --git a/include/Ultralight/CAPI.h b/include/Ultralight/CAPI.h index 671d073..e4c8057 100644 --- a/include/Ultralight/CAPI.h +++ b/include/Ultralight/CAPI.h @@ -179,62 +179,86 @@ ULExport ULConfig ulCreateConfig(); ULExport void ulDestroyConfig(ULConfig config); /// -/// Set whether images should be enabled (Default = True) +/// Set whether images should be enabled (Default = True). /// ULExport void ulConfigSetEnableImages(ULConfig config, bool enabled); /// -/// Set whether JavaScript should be eanbled (Default = True) +/// Set whether JavaScript should be eanbled (Default = True). /// ULExport void ulConfigSetEnableJavaScript(ULConfig config, bool enabled); /// /// Set whether we should use BGRA byte order (instead of RGBA) for View -/// bitmaps. (Default = False) +/// bitmaps (Default = False). /// ULExport void ulConfigSetUseBGRAForOffscreenRendering(ULConfig config, bool enabled); /// /// Set the amount that the application DPI has been scaled, used for -/// scaling device coordinates to pixels and oversampling raster shapes. -/// (Default = 1.0) +/// scaling device coordinates to pixels and oversampling raster shapes +/// (Default = 1.0). /// ULExport void ulConfigSetDeviceScaleHint(ULConfig config, double value); /// -/// Set default font-family to use (Default = Times New Roman) +/// Set default font-family to use (Default = Times New Roman). /// ULExport void ulConfigSetFontFamilyStandard(ULConfig config, ULString font_name); /// -/// Set default font-family to use for fixed fonts, eg
 and .
-/// (Default = Courier New)
+/// Set default font-family to use for fixed fonts, eg 
 and 
+/// (Default = Courier New).
 ///
 ULExport void ulConfigSetFontFamilyFixed(ULConfig config, ULString font_name);
 
 ///
-/// Set default font-family to use for serif fonts. (Default = Times New Roman)
+/// Set default font-family to use for serif fonts (Default = Times New Roman).
 ///
 ULExport void ulConfigSetFontFamilySerif(ULConfig config, ULString font_name);
 
 ///
-/// Set default font-family to use for sans-serif fonts. (Default = Arial)
+/// Set default font-family to use for sans-serif fonts (Default = Arial).
 ///
 ULExport void ulConfigSetFontFamilySansSerif(ULConfig config,
                                              ULString font_name);
 
 ///
-/// Set user agent string. (See  for the default)
+/// Set user agent string (See  for the default).
 ///
 ULExport void ulConfigSetUserAgent(ULConfig config, ULString agent_string);
 
 ///
-/// Set user stylesheet (CSS). (Default = Empty)
+/// Set user stylesheet (CSS) (Default = Empty).
 ///
 ULExport void ulConfigSetUserStylesheet(ULConfig config, ULString css_string);
 
+///
+/// Set whether or not we should continuously repaint any Views or compositor
+/// layers, regardless if they are dirty or not. This is mainly used to
+/// diagnose painting/shader issues. (Default = False)
+///
+ULExport void ulConfigSetForceRepaint(ULConfig config, bool enabled);
+
+///
+/// Set the amount of time to wait before triggering another repaint when a
+/// CSS animation is active. (Default = 1.0 / 60.0)
+///
+ULExport void ulConfigSetAnimationTimerDelay(ULConfig config, double delay);
+
+///
+/// Set the size of WebCore's memory cache for decoded images, scripts, and
+/// other assets in bytes. (Default = 64 * 1024 * 1024)
+///
+ULExport void ulConfigSetMemoryCacheSize(ULConfig config, unsigned int size);
+
+///
+/// Set the number of pages to keep in the cache. (Default = 0)
+///
+ULExport void ulConfigSetPageCacheSize(ULConfig config, unsigned int size);
+
 /******************************************************************************
  * Renderer
  *****************************************************************************/
@@ -250,7 +274,7 @@ ULExport ULRenderer ulCreateRenderer(ULConfig config);
 ULExport void ulDestroyRenderer(ULRenderer renderer);
 
 ///
-/// Update timers and dispatch internal callbacks (JavaScript and network)
+/// Update timers and dispatch internal callbacks (JavaScript and network).
 ///
 ULExport void ulUpdate(ULRenderer renderer);
 
@@ -294,7 +318,7 @@ ULExport ULString ulViewGetTitle(ULView view);
 ULExport bool ulViewIsLoading(ULView view);
 
 ///
-/// Check if bitmap is dirty (has changed since last call to ulViewGetBitmap)
+/// Check if bitmap is dirty (has changed since last call to ulViewGetBitmap).
 ///
 ULExport bool ulViewIsBitmapDirty(ULView view);
 
@@ -306,78 +330,78 @@ ULExport bool ulViewIsBitmapDirty(ULView view);
 ULExport ULBitmap ulViewGetBitmap(ULView view);
 
 ///
-/// Load a raw string of html
+/// Load a raw string of HTML.
 ///
 ULExport void ulViewLoadHTML(ULView view, ULString html_string);
 
 ///
-/// Load a URL into main frame
+/// Load a URL into main frame.
 ///
 ULExport void ulViewLoadURL(ULView view, ULString url_string);
 
 ///
-/// Resize view to a certain width and height (in device coordinates)
+/// Resize view to a certain width and height (in device coordinates).
 ///
 ULExport void ulViewResize(ULView view, unsigned int width,
                            unsigned int height);
 
 ///
-/// Get the page's JSContext for use with JavaScriptCore API
+/// Get the page's JSContext for use with JavaScriptCore API.
 ///
 ULExport JSContextRef ulViewGetJSContext(ULView view);
 
 ///
-/// Evaluate a raw string of JavaScript and return result
+/// Evaluate a raw string of JavaScript and return result.
 ///
 ULExport JSValueRef ulViewEvaluateScript(ULView view, ULString js_string);
 
 ///
-/// Check if can navigate backwards in history
+/// Check if can navigate backwards in history.
 ///
 ULExport bool ulViewCanGoBack(ULView view);
 
 ///
-/// Check if can navigate forwards in history
+/// Check if can navigate forwards in history.
 ///
 ULExport bool ulViewCanGoForward(ULView view);
 
 ///
-/// Navigate backwards in history
+/// Navigate backwards in history.
 ///
 ULExport void ulViewGoBack(ULView view);
 
 ///
-/// Navigate forwards in history
+/// Navigate forwards in history.
 ///
 ULExport void ulViewGoForward(ULView view);
 
 ///
-/// Navigate to arbitrary offset in history
+/// Navigate to arbitrary offset in history.
 ///
 ULExport void ulViewGoToHistoryOffset(ULView view, int offset);
 
 ///
-/// Reload current page
+/// Reload current page.
 ///
 ULExport void ulViewReload(ULView view);
 
 ///
-/// Stop all page loads
+/// Stop all page loads.
 ///
 ULExport void ulViewStop(ULView view);
 
 ///
-/// Fire a keyboard event
+/// Fire a keyboard event.
 ///
 ULExport void ulViewFireKeyEvent(ULView view, ULKeyEvent key_event);
 
 ///
-/// Fire a mouse event
+/// Fire a mouse event.
 ///
 ULExport void ulViewFireMouseEvent(ULView view, ULMouseEvent mouse_event);
 
 ///
-/// Fire a scroll event
+/// Fire a scroll event.
 ///
 ULExport void ulViewFireScrollEvent(ULView view, ULScrollEvent scroll_event);
 
@@ -385,7 +409,7 @@ typedef void
 (*ULChangeTitleCallback) (void* user_data, ULView caller, ULString title);
 
 ///
-/// Set callback for when the page title changes
+/// Set callback for when the page title changes.
 ///
 ULExport void ulViewSetChangeTitleCallback(ULView view,
                                            ULChangeTitleCallback callback,
@@ -395,7 +419,7 @@ typedef void
 (*ULChangeURLCallback) (void* user_data, ULView caller, ULString url);
 
 ///
-/// Set callback for when the page URL changes
+/// Set callback for when the page URL changes.
 ///
 ULExport void ulViewSetChangeURLCallback(ULView view,
                                          ULChangeURLCallback callback,
@@ -405,7 +429,7 @@ typedef void
 (*ULChangeTooltipCallback) (void* user_data, ULView caller, ULString tooltip);
 
 ///
-/// Set callback for when the tooltip changes (usually result of a mouse hover)
+/// Set callback for when the tooltip changes (usually result of a mouse hover).
 ///
 ULExport void ulViewSetChangeTooltipCallback(ULView view,
                                              ULChangeTooltipCallback callback,
@@ -415,7 +439,7 @@ typedef void
 (*ULChangeCursorCallback) (void* user_data, ULView caller, ULCursor cursor);
 
 ///
-/// Set callback for when the mouse cursor changes
+/// Set callback for when the mouse cursor changes.
 ///
 ULExport void ulViewSetChangeCursorCallback(ULView view,
                                             ULChangeCursorCallback callback,
@@ -430,7 +454,7 @@ typedef void
 
 ///
 /// Set callback for when a message is added to the console (useful for
-/// JavaScript / network errors and debugging)
+/// JavaScript / network errors and debugging).
 ///
 ULExport void ulViewSetAddConsoleMessageCallback(ULView view,
                                           ULAddConsoleMessageCallback callback,
@@ -440,7 +464,7 @@ typedef void
 (*ULBeginLoadingCallback) (void* user_data, ULView caller);
 
 ///
-/// Set callback for when the page begins loading new URL into main frame
+/// Set callback for when the page begins loading new URL into main frame.
 ///
 ULExport void ulViewSetBeginLoadingCallback(ULView view,
                                             ULBeginLoadingCallback callback,
@@ -450,7 +474,7 @@ typedef void
 (*ULFinishLoadingCallback) (void* user_data, ULView caller);
 
 ///
-/// Set callback for when the page finishes loading URL into main frame
+/// Set callback for when the page finishes loading URL into main frame.
 ///
 ULExport void ulViewSetFinishLoadingCallback(ULView view,
                                              ULFinishLoadingCallback callback,
@@ -460,7 +484,7 @@ typedef void
 (*ULUpdateHistoryCallback) (void* user_data, ULView caller);
 
 ///
-/// Set callback for when the history (back/forward state) is modified
+/// Set callback for when the history (back/forward state) is modified.
 ///
 ULExport void ulViewSetUpdateHistoryCallback(ULView view,
                                              ULUpdateHistoryCallback callback,
@@ -491,22 +515,37 @@ ULExport void ulViewSetNeedsPaint(ULView view, bool needs_paint);
 ///
 ULExport bool ulViewGetNeedsPaint(ULView view);
 
+///
+/// Create an inspector for this View, this is useful for debugging and
+/// inspecting pages locally. This will only succeed if you have the
+/// inspector assets in your filesystem-- the inspector will look for
+/// file:///inspector/Main.html when it loads.
+///
+/// @note  The initial dimensions of the returned View are 10x10, you should
+///        call ulViewResize on the returned View to resize it to your desired
+///        dimensions.
+///
+/// @note  You will need to call ulDestroyView on the returned instance
+///        when you're done using it.
+///
+ULExport ULView ulViewCreateInspectorView(ULView view);
+
 /******************************************************************************
  * String
  *****************************************************************************/
 
 ///
-/// Create string from null-terminated ASCII C-string
+/// Create string from null-terminated ASCII C-string.
 ///
 ULExport ULString ulCreateString(const char* str);
 
 ///
-/// Create string from UTF-8 buffer
+/// Create string from UTF-8 buffer.
 ///
 ULExport ULString ulCreateStringUTF8(const char* str, size_t len);
 
 ///
-/// Create string from UTF-16 buffer
+/// Create string from UTF-16 buffer.
 ///
 ULExport ULString ulCreateStringUTF16(ULChar16* str, size_t len);
 
@@ -521,7 +560,7 @@ ULExport void ulDestroyString(ULString str);
 ULExport ULChar16* ulStringGetData(ULString str);
 
 ///
-/// Get length in UTF-16 characters
+/// Get length in UTF-16 characters.
 ///
 ULExport size_t ulStringGetLength(ULString str);
 
diff --git a/include/Ultralight/Matrix.h b/include/Ultralight/Matrix.h
index 81277f6..f4d2205 100644
--- a/include/Ultralight/Matrix.h
+++ b/include/Ultralight/Matrix.h
@@ -19,64 +19,135 @@
 namespace ultralight {
 
 ///
-/// Affine Matrix helper
+/// 4x4 Matrix Helper
 ///
-struct UExport Matrix {
+struct UExport Matrix4x4 {
   ///
-  /// Raw affine matrix as an array
+  /// Raw 4x4 matrix as an array
   ///
-  float data[6];
+  float data[16];
 
   ///
-  /// Set to identity matrix
+  /// Set to identity matrix.
+  ///
+  void SetIdentity();
+};
+
+///
+/// Transformation Matrix helper
+///
+struct UExport Matrix {
+#if defined(__x86_64__) || defined(_M_X64)
+#if defined(_MSC_VER)
+  __declspec(align(16)) typedef double Aligned4x4[4][4];
+#else
+  typedef double Aligned4x4[4][4] __attribute__((aligned(16)));
+#endif
+#else
+  typedef double Aligned4x4[4][4];
+#endif
+
+  Aligned4x4 data;
+
+  ///
+  /// Set to identity matrix.
   ///
   void SetIdentity();
 
   ///
-  /// Set to another matrix
+  /// Set to an orthographic projection matrix suitable for use with our
+  /// vertex shaders. Optionally flip the y-coordinate space (eg, for OpenGL).
   ///
-  void Set(const Matrix& other);
-  
-  ///
-  /// Set from raw affine members
-  ///
-  void Set(float a, float b, float c, float d, float e, float f);
+  void SetOrthographicProjection(double screen_width, double screen_height,
+    bool flip_y);
 
   ///
-  /// Whether or not this is an identity matrix
+  /// Set to another matrix.
+  ///
+  void Set(const Matrix& other);
+
+  ///
+  /// Set to another matrix.
+  ///
+  void Set(const Matrix4x4& other);
+  
+  ///
+  /// Set from raw affine members.
+  ///
+  void Set(double a, double b, double c, double d, double e, double f);
+
+  ///
+  /// Set from raw 4x4 components.
+  ///
+  void Set(double m11, double m12, double m13, double m14,
+           double m21, double m22, double m23, double m24,
+           double m31, double m32, double m33, double m34,
+           double m41, double m42, double m43, double m44);
+
+  inline double m11() const { return data[0][0]; }
+  inline double m12() const { return data[0][1]; }
+  inline double m13() const { return data[0][2]; }
+  inline double m14() const { return data[0][3]; }
+  inline double m21() const { return data[1][0]; }
+  inline double m22() const { return data[1][1]; }
+  inline double m23() const { return data[1][2]; }
+  inline double m24() const { return data[1][3]; }
+  inline double m31() const { return data[2][0]; }
+  inline double m32() const { return data[2][1]; }
+  inline double m33() const { return data[2][2]; }
+  inline double m34() const { return data[2][3]; }
+  inline double m41() const { return data[3][0]; }
+  inline double m42() const { return data[3][1]; }
+  inline double m43() const { return data[3][2]; }
+  inline double m44() const { return data[3][3]; }
+
+  inline double a() const { return data[0][0]; }
+  inline double b() const { return data[0][1]; }
+  inline double c() const { return data[1][0]; }
+  inline double d() const { return data[1][1]; }
+  inline double e() const { return data[3][0]; }
+  inline double f() const { return data[3][1]; }
+
+  ///
+  /// Whether or not this is an identity matrix.
   ///
   bool IsIdentity() const;
 
   ///
-  /// Whether or not this is an identity matrix or translation
+  /// Whether or not this is an identity matrix or translation.
   ///
   bool IsIdentityOrTranslation() const;
 
+  ///
+  /// Whether or not this matrix uses only affine transformations.
+  ///
+  bool IsAffine() const;
+
   ///
   /// Whether or not this is an identity, translation, or non-negative
-  /// uniform scale
+  /// uniform scale.
   ///
   bool IsSimple() const;
 
   ///
-  /// Translate by x and y
+  /// Translate by x and y.
   ///
-  void Translate(float x, float y);
+  void Translate(double x, double y);
 
   ///
-  /// Scale by x and y
+  /// Scale by x and y.
   ///
-  void Scale(float x, float y);
+  void Scale(double x, double y);
 
   /// 
   /// Rotate matrix by theta (in degrees)
   ///
-  void Rotate(float theta);
+  void Rotate(double theta);
 
   ///
   /// Rotate matrix by x and y
   ///
-  void Rotate(float x, float y);
+  void Rotate(double x, double y);
 
   ///
   /// Transform (multiply) by another Matrix
@@ -102,28 +173,14 @@ struct UExport Matrix {
   /// Get an integer hash of this matrix's members.
   ///
   uint32_t Hash() const;
+
+  ///
+  /// Get this matrix as unaligned 4x4 float components (for use passing to
+  /// GPU driver APIs). 
+  ///
+  Matrix4x4 GetMatrix4x4() const;
 };
 
-///
-/// 4x4 Matrix Helper
-///
-struct UExport Matrix4x4 {
-  ///
-  /// Raw 4x4 matrix as an array
-  ///
-  float data[16];
-
-  ///
-  /// Set to identity matrix.
-  ///
-  void SetIdentity();
-};
-
-///
-/// Convert affine matrix to a 4x4 matrix.
-///
-Matrix4x4 UExport ConvertAffineTo4x4(const Matrix& mat);
-
 bool UExport operator==(const Matrix& a, const Matrix& b);
 bool UExport operator!=(const Matrix& a, const Matrix& b);
 
diff --git a/include/Ultralight/View.h b/include/Ultralight/View.h
index aaba8f9..d4b966a 100644
--- a/include/Ultralight/View.h
+++ b/include/Ultralight/View.h
@@ -224,6 +224,17 @@ public:
   ///
   virtual bool needs_paint() const = 0;
 
+  ///
+  /// Get the inspector for this View, this is useful for debugging and
+  /// inspecting pages locally. This will only succeed if you have the
+  /// inspector assets in your filesystem-- the inspector will look for
+  /// file:///inspector/Main.html when it first loads.
+  ///
+  /// @note  The inspector View is owned by the View and lazily-created on
+  ///        first call. The initial dimensions are 10x10, you should call
+  ///        View::Resize() on the returned View to resize it to your desired
+  ///        dimensions.
+  ///
   virtual RefPtr inspector() = 0;
 
 protected:
diff --git a/include/Ultralight/platform/Config.h b/include/Ultralight/platform/Config.h
index 6a258e7..2efba14 100644
--- a/include/Ultralight/platform/Config.h
+++ b/include/Ultralight/platform/Config.h
@@ -57,7 +57,7 @@ struct UExport Config {
   bool enable_images = true;
 
   ///
-  /// Whether or not JavaScript should be enabled
+  /// Whether or not JavaScript should be enabled.
   ///
   bool enable_javascript = true;
 
@@ -107,6 +107,36 @@ struct UExport Config {
   /// and platform input widgets.
   ///
   String16 user_stylesheet;
+
+  ///
+  /// Whether or not we should continuously repaint any Views or compositor
+  /// layers, regardless if they are dirty or not. This is mainly used to
+  /// diagnose painting/shader issues.
+  ///
+  bool force_repaint = false;
+
+  ///
+  /// When a CSS animation is active, the amount of time to wait before
+  /// triggering another repaint.
+  ///
+  double animation_timer_delay = 1.0 / 60.0;
+
+  ///
+  /// Size of WebCore's memory cache in bytes. 
+  ///
+  /// @note  You should increase this if you anticipate handling pages with
+  ///        large resources, Safari typically uses 128+ MiB for its cache.
+  ///
+  uint32_t memory_cache_size = 64 * 1024 * 1024;
+
+  ///
+  /// Number of pages to keep in the cache. Defaults to 0 (none).
+  ///
+  /// @note  Safari typically caches about 5 pages and maintains an on-disk
+  ///        cache to support typical web-browsing activities. If you increase
+  ///        this, you should probably increase the memory cache size as well.
+  ///
+  uint32_t page_cache_size = 0;
 };
 
 }  // namespace ultralight
diff --git a/include/Ultralight/platform/GPUDriver.h b/include/Ultralight/platform/GPUDriver.h
index 4eec26d..db50819 100644
--- a/include/Ultralight/platform/GPUDriver.h
+++ b/include/Ultralight/platform/GPUDriver.h
@@ -121,6 +121,8 @@ struct UExport GPUState {
   vec4 uniform_vector[8];
   uint8_t clip_size;
   Matrix4x4 clip[8];
+  bool enable_scissor;
+  Rect scissor_rect;
 };
 
 ///
@@ -222,7 +224,7 @@ public:
   virtual void BindRenderBuffer(uint32_t render_buffer_id) = 0;
 
   ///
-  /// Clear a render buffer (flush pixels)
+  /// Clear a render buffer (flush pixels to 0).
   ///
   virtual void ClearRenderBuffer(uint32_t render_buffer_id) = 0;
 
diff --git a/muon.go b/muon.go
index 489affc..9d794c1 100644
--- a/muon.go
+++ b/muon.go
@@ -44,7 +44,8 @@ func New(cfg *Config, handler http.Handler) *Window {
 	}
 
 	ufg := UlCreateConfig()
-	w.app = UlCreateApp(ufg)
+	std := UlCreateSettings()
+	w.app = UlCreateApp(std, ufg)
 	mm := UlAppGetMainMonitor(w.app)
 	w.wnd = UlCreateWindow(mm, w.cfg.Height, w.cfg.Width, false, w.cfg.Hint)
 
diff --git a/ultralight.yml b/ultralight.yml
index a4c3882..c708208 100644
--- a/ultralight.yml
+++ b/ultralight.yml
@@ -4,7 +4,7 @@ GENERATOR:
   PackageLicense: "THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS."
   FlagGroups:
     - {name: CFLAGS, flags: [-I../include]}
-    - {name: LDFLAGS, flags: [-L -lUltralightCore -lWebCore -lUltralight -lAppCore]}
+    - {name: LDFLAGS, flags: ["-L${SRCDIR}/libs -lUltralightCore -lWebCore -lUltralight -lAppCore"]}
   Includes: ["AppCore/CAPI.h"]
   Options:
     SafeStrings: true
@@ -37,18 +37,18 @@ TRANSLATOR:
             - {transform: export}
         function:
             - {action: ignore, from: __GO__}
-            - {action: ignore, from: JSObjectGetArrayBufferByteLength}
-            - {action: ignore, from: JSObjectGetArrayBufferBytesPtr}
-            - {action: ignore, from: JSObjectGetTypedArrayBuffer}
-            - {action: ignore, from: JSObjectGetTypedArrayByteLength}
-            - {action: ignore, from: JSObjectGetTypedArrayByteOffset}
-            - {action: ignore, from: JSObjectGetTypedArrayBytesPtr}
-            - {action: ignore, from: JSObjectGetTypedArrayLength}
-            - {action: ignore, from: JSObjectMakeArrayBufferWithBytesNoCopy}
-            - {action: ignore, from: JSObjectMakeTypedArray}
-            - {action: ignore, from: JSObjectMakeTypedArrayWithArrayBuffer}
-            - {action: ignore, from: JSObjectMakeTypedArrayWithArrayBufferAndOffset}
-            - {action: ignore, from: JSObjectMakeTypedArrayWithBytesNoCopy}
-            - {action: ignore, from: JSValueGetTypedArrayType}
+            # - {action: ignore, from: JSObjectGetArrayBufferByteLength}
+            # - {action: ignore, from: JSObjectGetArrayBufferBytesPtr}
+            # - {action: ignore, from: JSObjectGetTypedArrayBuffer}
+            # - {action: ignore, from: JSObjectGetTypedArrayByteLength}
+            # - {action: ignore, from: JSObjectGetTypedArrayByteOffset}
+            # - {action: ignore, from: JSObjectGetTypedArrayBytesPtr}
+            # - {action: ignore, from: JSObjectGetTypedArrayLength}
+            # - {action: ignore, from: JSObjectMakeArrayBufferWithBytesNoCopy}
+            # - {action: ignore, from: JSObjectMakeTypedArray}
+            # - {action: ignore, from: JSObjectMakeTypedArrayWithArrayBuffer}
+            # - {action: ignore, from: JSObjectMakeTypedArrayWithArrayBufferAndOffset}
+            # - {action: ignore, from: JSObjectMakeTypedArrayWithBytesNoCopy}
+            # - {action: ignore, from: JSValueGetTypedArrayType}
         private:
             - {transform: unexport}
\ No newline at end of file
diff --git a/ultralight/cgo_helpers.c b/ultralight/cgo_helpers.c
index d1da16b..89c7738 100644
--- a/ultralight/cgo_helpers.c
+++ b/ultralight/cgo_helpers.c
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 #include "_cgo_export.h"
diff --git a/ultralight/cgo_helpers.go b/ultralight/cgo_helpers.go
index 7bf5cae..03c3254 100644
--- a/ultralight/cgo_helpers.go
+++ b/ultralight/cgo_helpers.go
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 package ultralight
@@ -886,7 +886,7 @@ func jSObjectCallAsFunctionCallback89F9469B(cctx C.JSContextRef, cfunction C.JSO
 		hxff73280 := (*sliceHeader)(unsafe.Pointer(&arguments89f9469b))
 		hxff73280.Data = unsafe.Pointer(carguments)
 		hxff73280.Cap = 0x7fffffff
-		hxff73280.Len = int(argumentCount89f9469b) // <-- Was commented out
+		hxff73280.Len = int(argumentCount89f9469b)
 
 		var exception89f9469b []JSValueRef
 		hxfa9955c := (*sliceHeader)(unsafe.Pointer(&exception89f9469b))
diff --git a/ultralight/cgo_helpers.h b/ultralight/cgo_helpers.h
index f02bd96..070f13a 100644
--- a/ultralight/cgo_helpers.h
+++ b/ultralight/cgo_helpers.h
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 #include "AppCore/CAPI.h"
diff --git a/ultralight/const.go b/ultralight/const.go
index 78f41ce..62851f1 100644
--- a/ultralight/const.go
+++ b/ultralight/const.go
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 package ultralight
@@ -19,10 +19,10 @@ const (
 	JSC_OBJC_API_ENABLED = 0
 )
 
-// ULWindowFlags as declared in AppCore/CAPI.h:46
+// ULWindowFlags as declared in AppCore/CAPI.h:47
 type ULWindowFlags int32
 
-// ULWindowFlags enumeration from AppCore/CAPI.h:46
+// ULWindowFlags enumeration from AppCore/CAPI.h:47
 const (
 	KWindowFlags_Borderless  ULWindowFlags = 1
 	KWindowFlags_Titled      ULWindowFlags = 2
diff --git a/ultralight/doc.go b/ultralight/doc.go
new file mode 100644
index 0000000..37bfcf9
--- /dev/null
+++ b/ultralight/doc.go
@@ -0,0 +1,9 @@
+// THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
+
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
+// Code generated by https://git.io/c-for-go. DO NOT EDIT.
+
+/*
+Ultralight bindings for golang
+*/
+package ultralight
diff --git a/ultralight/libs/libAppCore.so b/ultralight/libs/libAppCore.so
index a413ab0..165f8d2 100644
Binary files a/ultralight/libs/libAppCore.so and b/ultralight/libs/libAppCore.so differ
diff --git a/ultralight/libs/libUltralight.so b/ultralight/libs/libUltralight.so
index ecbc539..d2abce7 100644
Binary files a/ultralight/libs/libUltralight.so and b/ultralight/libs/libUltralight.so differ
diff --git a/ultralight/libs/libUltralightCore.so b/ultralight/libs/libUltralightCore.so
index 215a077..8686354 100644
Binary files a/ultralight/libs/libUltralightCore.so and b/ultralight/libs/libUltralightCore.so differ
diff --git a/ultralight/libs/libWebCore.so b/ultralight/libs/libWebCore.so
index b06e391..3f95e9e 100644
Binary files a/ultralight/libs/libWebCore.so and b/ultralight/libs/libWebCore.so differ
diff --git a/ultralight/types.go b/ultralight/types.go
index 4a61d10..51538f4 100644
--- a/ultralight/types.go
+++ b/ultralight/types.go
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 package ultralight
@@ -15,25 +15,28 @@ package ultralight
 import "C"
 import "unsafe"
 
-// ULApp as declared in AppCore/CAPI.h:33
+// ULSettings as declared in AppCore/CAPI.h:33
+type ULSettings C.ULSettings
+
+// ULApp as declared in AppCore/CAPI.h:34
 type ULApp C.ULApp
 
-// ULWindow as declared in AppCore/CAPI.h:34
+// ULWindow as declared in AppCore/CAPI.h:35
 type ULWindow C.ULWindow
 
-// ULMonitor as declared in AppCore/CAPI.h:35
+// ULMonitor as declared in AppCore/CAPI.h:36
 type ULMonitor C.ULMonitor
 
-// ULOverlay as declared in AppCore/CAPI.h:36
+// ULOverlay as declared in AppCore/CAPI.h:37
 type ULOverlay C.ULOverlay
 
-// ULUpdateCallback type as declared in AppCore/CAPI.h:81
+// ULUpdateCallback type as declared in AppCore/CAPI.h:118
 type ULUpdateCallback func(user_data unsafe.Pointer)
 
-// ULCloseCallback type as declared in AppCore/CAPI.h:160
+// ULCloseCallback type as declared in AppCore/CAPI.h:195
 type ULCloseCallback func(user_data unsafe.Pointer)
 
-// ULResizeCallback type as declared in AppCore/CAPI.h:170
+// ULResizeCallback type as declared in AppCore/CAPI.h:205
 type ULResizeCallback func(user_data unsafe.Pointer, width uint32, height uint32)
 
 // ULChar16 type as declared in Ultralight/CAPI.h:43
@@ -69,31 +72,31 @@ type ULMouseEvent C.ULMouseEvent
 // ULScrollEvent as declared in Ultralight/CAPI.h:59
 type ULScrollEvent C.ULScrollEvent
 
-// ULChangeTitleCallback type as declared in Ultralight/CAPI.h:385
+// ULChangeTitleCallback type as declared in Ultralight/CAPI.h:409
 type ULChangeTitleCallback func(user_data unsafe.Pointer, caller ULView, title ULString)
 
-// ULChangeURLCallback type as declared in Ultralight/CAPI.h:395
+// ULChangeURLCallback type as declared in Ultralight/CAPI.h:419
 type ULChangeURLCallback func(user_data unsafe.Pointer, caller ULView, url ULString)
 
-// ULChangeTooltipCallback type as declared in Ultralight/CAPI.h:405
+// ULChangeTooltipCallback type as declared in Ultralight/CAPI.h:429
 type ULChangeTooltipCallback func(user_data unsafe.Pointer, caller ULView, tooltip ULString)
 
-// ULChangeCursorCallback type as declared in Ultralight/CAPI.h:415
+// ULChangeCursorCallback type as declared in Ultralight/CAPI.h:439
 type ULChangeCursorCallback func(user_data unsafe.Pointer, caller ULView, cursor ULCursor)
 
-// ULAddConsoleMessageCallback type as declared in Ultralight/CAPI.h:425
+// ULAddConsoleMessageCallback type as declared in Ultralight/CAPI.h:449
 type ULAddConsoleMessageCallback func(user_data unsafe.Pointer, caller ULView, source ULMessageSource, level ULMessageLevel, message ULString, line_number uint32, column_number uint32, source_id ULString)
 
-// ULBeginLoadingCallback type as declared in Ultralight/CAPI.h:440
+// ULBeginLoadingCallback type as declared in Ultralight/CAPI.h:464
 type ULBeginLoadingCallback func(user_data unsafe.Pointer, caller ULView)
 
-// ULFinishLoadingCallback type as declared in Ultralight/CAPI.h:450
+// ULFinishLoadingCallback type as declared in Ultralight/CAPI.h:474
 type ULFinishLoadingCallback func(user_data unsafe.Pointer, caller ULView)
 
-// ULUpdateHistoryCallback type as declared in Ultralight/CAPI.h:460
+// ULUpdateHistoryCallback type as declared in Ultralight/CAPI.h:484
 type ULUpdateHistoryCallback func(user_data unsafe.Pointer, caller ULView)
 
-// ULDOMReadyCallback type as declared in Ultralight/CAPI.h:470
+// ULDOMReadyCallback type as declared in Ultralight/CAPI.h:494
 type ULDOMReadyCallback func(user_data unsafe.Pointer, caller ULView)
 
 // JSContextGroupRef as declared in JavaScriptCore/JSBase.h:40
diff --git a/ultralight/ultralight.go b/ultralight/ultralight.go
index 36588b2..6ff2641 100644
--- a/ultralight/ultralight.go
+++ b/ultralight/ultralight.go
@@ -1,6 +1,6 @@
 // THE AUTOGENERATED LICENSE. ALL THE RIGHTS ARE RESERVED BY ROBOTS.
 
-// WARNING: This file has automatically been generated on Fri, 27 Sep 2019 21:28:43 CDT.
+// WARNING: This file has automatically been generated on Mon, 07 Oct 2019 13:59:36 CDT.
 // Code generated by https://git.io/c-for-go. DO NOT EDIT.
 
 package ultralight
@@ -18,28 +18,56 @@ import (
 	"unsafe"
 )
 
-// UlCreateApp function as declared in AppCore/CAPI.h:58
-func UlCreateApp(config ULConfig) ULApp {
+// UlCreateSettings function as declared in AppCore/CAPI.h:52
+func UlCreateSettings() ULSettings {
+	__ret := C.ulCreateSettings()
+	__v := *(*ULSettings)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// UlDestroySettings function as declared in AppCore/CAPI.h:57
+func UlDestroySettings(settings ULSettings) {
+	csettings, _ := *(*C.ULSettings)(unsafe.Pointer(&settings)), cgoAllocsUnknown
+	C.ulDestroySettings(csettings)
+}
+
+// UlSettingsSetFileSystemPath function as declared in AppCore/CAPI.h:69
+func UlSettingsSetFileSystemPath(settings ULSettings, path ULString) {
+	csettings, _ := *(*C.ULSettings)(unsafe.Pointer(&settings)), cgoAllocsUnknown
+	cpath, _ := *(*C.ULString)(unsafe.Pointer(&path)), cgoAllocsUnknown
+	C.ulSettingsSetFileSystemPath(csettings, cpath)
+}
+
+// UlSettingsSetLoadShadersFromFileSystem function as declared in AppCore/CAPI.h:78
+func UlSettingsSetLoadShadersFromFileSystem(settings ULSettings, enabled bool) {
+	csettings, _ := *(*C.ULSettings)(unsafe.Pointer(&settings)), cgoAllocsUnknown
+	cenabled, _ := (C._Bool)(enabled), cgoAllocsUnknown
+	C.ulSettingsSetLoadShadersFromFileSystem(csettings, cenabled)
+}
+
+// UlCreateApp function as declared in AppCore/CAPI.h:95
+func UlCreateApp(settings ULSettings, config ULConfig) ULApp {
+	csettings, _ := *(*C.ULSettings)(unsafe.Pointer(&settings)), cgoAllocsUnknown
 	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
-	__ret := C.ulCreateApp(cconfig)
+	__ret := C.ulCreateApp(csettings, cconfig)
 	__v := *(*ULApp)(unsafe.Pointer(&__ret))
 	return __v
 }
 
-// UlDestroyApp function as declared in AppCore/CAPI.h:63
+// UlDestroyApp function as declared in AppCore/CAPI.h:100
 func UlDestroyApp(app ULApp) {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	C.ulDestroyApp(capp)
 }
 
-// UlAppSetWindow function as declared in AppCore/CAPI.h:73
+// UlAppSetWindow function as declared in AppCore/CAPI.h:110
 func UlAppSetWindow(app ULApp, window ULWindow) {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	C.ulAppSetWindow(capp, cwindow)
 }
 
-// UlAppGetWindow function as declared in AppCore/CAPI.h:78
+// UlAppGetWindow function as declared in AppCore/CAPI.h:115
 func UlAppGetWindow(app ULApp) ULWindow {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	__ret := C.ulAppGetWindow(capp)
@@ -47,7 +75,7 @@ func UlAppGetWindow(app ULApp) ULWindow {
 	return __v
 }
 
-// UlAppSetUpdateCallback function as declared in AppCore/CAPI.h:90
+// UlAppSetUpdateCallback function as declared in AppCore/CAPI.h:127
 func UlAppSetUpdateCallback(app ULApp, callback ULUpdateCallback, user_data unsafe.Pointer) {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -55,7 +83,7 @@ func UlAppSetUpdateCallback(app ULApp, callback ULUpdateCallback, user_data unsa
 	C.ulAppSetUpdateCallback(capp, ccallback, cuser_data)
 }
 
-// UlAppIsRunning function as declared in AppCore/CAPI.h:96
+// UlAppIsRunning function as declared in AppCore/CAPI.h:133
 func UlAppIsRunning(app ULApp) bool {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	__ret := C.ulAppIsRunning(capp)
@@ -63,7 +91,7 @@ func UlAppIsRunning(app ULApp) bool {
 	return __v
 }
 
-// UlAppGetMainMonitor function as declared in AppCore/CAPI.h:103
+// UlAppGetMainMonitor function as declared in AppCore/CAPI.h:140
 func UlAppGetMainMonitor(app ULApp) ULMonitor {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	__ret := C.ulAppGetMainMonitor(capp)
@@ -71,7 +99,7 @@ func UlAppGetMainMonitor(app ULApp) ULMonitor {
 	return __v
 }
 
-// UlAppGetRenderer function as declared in AppCore/CAPI.h:108
+// UlAppGetRenderer function as declared in AppCore/CAPI.h:145
 func UlAppGetRenderer(app ULApp) ULRenderer {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	__ret := C.ulAppGetRenderer(capp)
@@ -79,19 +107,19 @@ func UlAppGetRenderer(app ULApp) ULRenderer {
 	return __v
 }
 
-// UlAppRun function as declared in AppCore/CAPI.h:115
+// UlAppRun function as declared in AppCore/CAPI.h:150
 func UlAppRun(app ULApp) {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	C.ulAppRun(capp)
 }
 
-// UlAppQuit function as declared in AppCore/CAPI.h:120
+// UlAppQuit function as declared in AppCore/CAPI.h:155
 func UlAppQuit(app ULApp) {
 	capp, _ := *(*C.ULApp)(unsafe.Pointer(&app)), cgoAllocsUnknown
 	C.ulAppQuit(capp)
 }
 
-// UlMonitorGetScale function as declared in AppCore/CAPI.h:125
+// UlMonitorGetScale function as declared in AppCore/CAPI.h:160
 func UlMonitorGetScale(monitor ULMonitor) float64 {
 	cmonitor, _ := *(*C.ULMonitor)(unsafe.Pointer(&monitor)), cgoAllocsUnknown
 	__ret := C.ulMonitorGetScale(cmonitor)
@@ -99,7 +127,7 @@ func UlMonitorGetScale(monitor ULMonitor) float64 {
 	return __v
 }
 
-// UlMonitorGetWidth function as declared in AppCore/CAPI.h:130
+// UlMonitorGetWidth function as declared in AppCore/CAPI.h:165
 func UlMonitorGetWidth(monitor ULMonitor) uint32 {
 	cmonitor, _ := *(*C.ULMonitor)(unsafe.Pointer(&monitor)), cgoAllocsUnknown
 	__ret := C.ulMonitorGetWidth(cmonitor)
@@ -107,7 +135,7 @@ func UlMonitorGetWidth(monitor ULMonitor) uint32 {
 	return __v
 }
 
-// UlMonitorGetHeight function as declared in AppCore/CAPI.h:135
+// UlMonitorGetHeight function as declared in AppCore/CAPI.h:170
 func UlMonitorGetHeight(monitor ULMonitor) uint32 {
 	cmonitor, _ := *(*C.ULMonitor)(unsafe.Pointer(&monitor)), cgoAllocsUnknown
 	__ret := C.ulMonitorGetHeight(cmonitor)
@@ -115,7 +143,7 @@ func UlMonitorGetHeight(monitor ULMonitor) uint32 {
 	return __v
 }
 
-// UlCreateWindow function as declared in AppCore/CAPI.h:150
+// UlCreateWindow function as declared in AppCore/CAPI.h:185
 func UlCreateWindow(monitor ULMonitor, width uint32, height uint32, fullscreen bool, window_flags uint32) ULWindow {
 	cmonitor, _ := *(*C.ULMonitor)(unsafe.Pointer(&monitor)), cgoAllocsUnknown
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
@@ -127,13 +155,13 @@ func UlCreateWindow(monitor ULMonitor, width uint32, height uint32, fullscreen b
 	return __v
 }
 
-// UlDestroyWindow function as declared in AppCore/CAPI.h:157
+// UlDestroyWindow function as declared in AppCore/CAPI.h:192
 func UlDestroyWindow(window ULWindow) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	C.ulDestroyWindow(cwindow)
 }
 
-// UlWindowSetCloseCallback function as declared in AppCore/CAPI.h:165
+// UlWindowSetCloseCallback function as declared in AppCore/CAPI.h:200
 func UlWindowSetCloseCallback(window ULWindow, callback ULCloseCallback, user_data unsafe.Pointer) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -141,7 +169,7 @@ func UlWindowSetCloseCallback(window ULWindow, callback ULCloseCallback, user_da
 	C.ulWindowSetCloseCallback(cwindow, ccallback, cuser_data)
 }
 
-// UlWindowSetResizeCallback function as declared in AppCore/CAPI.h:176
+// UlWindowSetResizeCallback function as declared in AppCore/CAPI.h:211
 func UlWindowSetResizeCallback(window ULWindow, callback ULResizeCallback, user_data unsafe.Pointer) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -149,7 +177,7 @@ func UlWindowSetResizeCallback(window ULWindow, callback ULResizeCallback, user_
 	C.ulWindowSetResizeCallback(cwindow, ccallback, cuser_data)
 }
 
-// UlWindowGetWidth function as declared in AppCore/CAPI.h:183
+// UlWindowGetWidth function as declared in AppCore/CAPI.h:218
 func UlWindowGetWidth(window ULWindow) uint32 {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	__ret := C.ulWindowGetWidth(cwindow)
@@ -157,7 +185,7 @@ func UlWindowGetWidth(window ULWindow) uint32 {
 	return __v
 }
 
-// UlWindowGetHeight function as declared in AppCore/CAPI.h:188
+// UlWindowGetHeight function as declared in AppCore/CAPI.h:223
 func UlWindowGetHeight(window ULWindow) uint32 {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	__ret := C.ulWindowGetHeight(cwindow)
@@ -165,7 +193,7 @@ func UlWindowGetHeight(window ULWindow) uint32 {
 	return __v
 }
 
-// UlWindowIsFullscreen function as declared in AppCore/CAPI.h:193
+// UlWindowIsFullscreen function as declared in AppCore/CAPI.h:228
 func UlWindowIsFullscreen(window ULWindow) bool {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	__ret := C.ulWindowIsFullscreen(cwindow)
@@ -173,7 +201,7 @@ func UlWindowIsFullscreen(window ULWindow) bool {
 	return __v
 }
 
-// UlWindowGetScale function as declared in AppCore/CAPI.h:198
+// UlWindowGetScale function as declared in AppCore/CAPI.h:233
 func UlWindowGetScale(window ULWindow) float64 {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	__ret := C.ulWindowGetScale(cwindow)
@@ -181,7 +209,7 @@ func UlWindowGetScale(window ULWindow) float64 {
 	return __v
 }
 
-// UlWindowSetTitle function as declared in AppCore/CAPI.h:203
+// UlWindowSetTitle function as declared in AppCore/CAPI.h:238
 func UlWindowSetTitle(window ULWindow, title string) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	title = safeString(title)
@@ -190,20 +218,20 @@ func UlWindowSetTitle(window ULWindow, title string) {
 	runtime.KeepAlive(title)
 }
 
-// UlWindowSetCursor function as declared in AppCore/CAPI.h:208
+// UlWindowSetCursor function as declared in AppCore/CAPI.h:243
 func UlWindowSetCursor(window ULWindow, cursor ULCursor) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	ccursor, _ := (C.ULCursor)(cursor), cgoAllocsUnknown
 	C.ulWindowSetCursor(cwindow, ccursor)
 }
 
-// UlWindowClose function as declared in AppCore/CAPI.h:213
+// UlWindowClose function as declared in AppCore/CAPI.h:248
 func UlWindowClose(window ULWindow) {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	C.ulWindowClose(cwindow)
 }
 
-// UlWindowDeviceToPixel function as declared in AppCore/CAPI.h:218
+// UlWindowDeviceToPixel function as declared in AppCore/CAPI.h:253
 func UlWindowDeviceToPixel(window ULWindow, val int32) int32 {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	cval, _ := (C.int)(val), cgoAllocsUnknown
@@ -212,7 +240,7 @@ func UlWindowDeviceToPixel(window ULWindow, val int32) int32 {
 	return __v
 }
 
-// UlWindowPixelsToDevice function as declared in AppCore/CAPI.h:223
+// UlWindowPixelsToDevice function as declared in AppCore/CAPI.h:258
 func UlWindowPixelsToDevice(window ULWindow, val int32) int32 {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	cval, _ := (C.int)(val), cgoAllocsUnknown
@@ -221,7 +249,7 @@ func UlWindowPixelsToDevice(window ULWindow, val int32) int32 {
 	return __v
 }
 
-// UlCreateOverlay function as declared in AppCore/CAPI.h:244
+// UlCreateOverlay function as declared in AppCore/CAPI.h:279
 func UlCreateOverlay(window ULWindow, width uint32, height uint32, x int32, y int32) ULOverlay {
 	cwindow, _ := *(*C.ULWindow)(unsafe.Pointer(&window)), cgoAllocsUnknown
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
@@ -233,13 +261,13 @@ func UlCreateOverlay(window ULWindow, width uint32, height uint32, x int32, y in
 	return __v
 }
 
-// UlDestroyOverlay function as declared in AppCore/CAPI.h:250
+// UlDestroyOverlay function as declared in AppCore/CAPI.h:285
 func UlDestroyOverlay(overlay ULOverlay) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	C.ulDestroyOverlay(coverlay)
 }
 
-// UlOverlayGetView function as declared in AppCore/CAPI.h:255
+// UlOverlayGetView function as declared in AppCore/CAPI.h:290
 func UlOverlayGetView(overlay ULOverlay) ULView {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayGetView(coverlay)
@@ -247,7 +275,7 @@ func UlOverlayGetView(overlay ULOverlay) ULView {
 	return __v
 }
 
-// UlOverlayGetWidth function as declared in AppCore/CAPI.h:260
+// UlOverlayGetWidth function as declared in AppCore/CAPI.h:295
 func UlOverlayGetWidth(overlay ULOverlay) uint32 {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayGetWidth(coverlay)
@@ -255,7 +283,7 @@ func UlOverlayGetWidth(overlay ULOverlay) uint32 {
 	return __v
 }
 
-// UlOverlayGetHeight function as declared in AppCore/CAPI.h:265
+// UlOverlayGetHeight function as declared in AppCore/CAPI.h:300
 func UlOverlayGetHeight(overlay ULOverlay) uint32 {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayGetHeight(coverlay)
@@ -263,7 +291,7 @@ func UlOverlayGetHeight(overlay ULOverlay) uint32 {
 	return __v
 }
 
-// UlOverlayGetX function as declared in AppCore/CAPI.h:271
+// UlOverlayGetX function as declared in AppCore/CAPI.h:306
 func UlOverlayGetX(overlay ULOverlay) int32 {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayGetX(coverlay)
@@ -271,7 +299,7 @@ func UlOverlayGetX(overlay ULOverlay) int32 {
 	return __v
 }
 
-// UlOverlayGetY function as declared in AppCore/CAPI.h:277
+// UlOverlayGetY function as declared in AppCore/CAPI.h:312
 func UlOverlayGetY(overlay ULOverlay) int32 {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayGetY(coverlay)
@@ -279,7 +307,7 @@ func UlOverlayGetY(overlay ULOverlay) int32 {
 	return __v
 }
 
-// UlOverlayMoveTo function as declared in AppCore/CAPI.h:282
+// UlOverlayMoveTo function as declared in AppCore/CAPI.h:317
 func UlOverlayMoveTo(overlay ULOverlay, x int32, y int32) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	cx, _ := (C.int)(x), cgoAllocsUnknown
@@ -287,7 +315,7 @@ func UlOverlayMoveTo(overlay ULOverlay, x int32, y int32) {
 	C.ulOverlayMoveTo(coverlay, cx, cy)
 }
 
-// UlOverlayResize function as declared in AppCore/CAPI.h:288
+// UlOverlayResize function as declared in AppCore/CAPI.h:323
 func UlOverlayResize(overlay ULOverlay, width uint32, height uint32) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
@@ -295,7 +323,7 @@ func UlOverlayResize(overlay ULOverlay, width uint32, height uint32) {
 	C.ulOverlayResize(coverlay, cwidth, cheight)
 }
 
-// UlOverlayIsHidden function as declared in AppCore/CAPI.h:294
+// UlOverlayIsHidden function as declared in AppCore/CAPI.h:329
 func UlOverlayIsHidden(overlay ULOverlay) bool {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayIsHidden(coverlay)
@@ -303,19 +331,19 @@ func UlOverlayIsHidden(overlay ULOverlay) bool {
 	return __v
 }
 
-// UlOverlayHide function as declared in AppCore/CAPI.h:299
+// UlOverlayHide function as declared in AppCore/CAPI.h:334
 func UlOverlayHide(overlay ULOverlay) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	C.ulOverlayHide(coverlay)
 }
 
-// UlOverlayShow function as declared in AppCore/CAPI.h:304
+// UlOverlayShow function as declared in AppCore/CAPI.h:339
 func UlOverlayShow(overlay ULOverlay) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	C.ulOverlayShow(coverlay)
 }
 
-// UlOverlayHasFocus function as declared in AppCore/CAPI.h:309
+// UlOverlayHasFocus function as declared in AppCore/CAPI.h:344
 func UlOverlayHasFocus(overlay ULOverlay) bool {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	__ret := C.ulOverlayHasFocus(coverlay)
@@ -323,13 +351,13 @@ func UlOverlayHasFocus(overlay ULOverlay) bool {
 	return __v
 }
 
-// UlOverlayFocus function as declared in AppCore/CAPI.h:314
+// UlOverlayFocus function as declared in AppCore/CAPI.h:349
 func UlOverlayFocus(overlay ULOverlay) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	C.ulOverlayFocus(coverlay)
 }
 
-// UlOverlayUnfocus function as declared in AppCore/CAPI.h:319
+// UlOverlayUnfocus function as declared in AppCore/CAPI.h:354
 func UlOverlayUnfocus(overlay ULOverlay) {
 	coverlay, _ := *(*C.ULOverlay)(unsafe.Pointer(&overlay)), cgoAllocsUnknown
 	C.ulOverlayUnfocus(coverlay)
@@ -418,7 +446,35 @@ func UlConfigSetUserStylesheet(config ULConfig, css_string ULString) {
 	C.ulConfigSetUserStylesheet(cconfig, ccss_string)
 }
 
-// UlCreateRenderer function as declared in Ultralight/CAPI.h:245
+// UlConfigSetForceRepaint function as declared in Ultralight/CAPI.h:243
+func UlConfigSetForceRepaint(config ULConfig, enabled bool) {
+	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
+	cenabled, _ := (C._Bool)(enabled), cgoAllocsUnknown
+	C.ulConfigSetForceRepaint(cconfig, cenabled)
+}
+
+// UlConfigSetAnimationTimerDelay function as declared in Ultralight/CAPI.h:249
+func UlConfigSetAnimationTimerDelay(config ULConfig, delay float64) {
+	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
+	cdelay, _ := (C.double)(delay), cgoAllocsUnknown
+	C.ulConfigSetAnimationTimerDelay(cconfig, cdelay)
+}
+
+// UlConfigSetMemoryCacheSize function as declared in Ultralight/CAPI.h:255
+func UlConfigSetMemoryCacheSize(config ULConfig, size uint32) {
+	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
+	csize, _ := (C.uint)(size), cgoAllocsUnknown
+	C.ulConfigSetMemoryCacheSize(cconfig, csize)
+}
+
+// UlConfigSetPageCacheSize function as declared in Ultralight/CAPI.h:260
+func UlConfigSetPageCacheSize(config ULConfig, size uint32) {
+	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
+	csize, _ := (C.uint)(size), cgoAllocsUnknown
+	C.ulConfigSetPageCacheSize(cconfig, csize)
+}
+
+// UlCreateRenderer function as declared in Ultralight/CAPI.h:269
 func UlCreateRenderer(config ULConfig) ULRenderer {
 	cconfig, _ := *(*C.ULConfig)(unsafe.Pointer(&config)), cgoAllocsUnknown
 	__ret := C.ulCreateRenderer(cconfig)
@@ -426,25 +482,25 @@ func UlCreateRenderer(config ULConfig) ULRenderer {
 	return __v
 }
 
-// UlDestroyRenderer function as declared in Ultralight/CAPI.h:250
+// UlDestroyRenderer function as declared in Ultralight/CAPI.h:274
 func UlDestroyRenderer(renderer ULRenderer) {
 	crenderer, _ := *(*C.ULRenderer)(unsafe.Pointer(&renderer)), cgoAllocsUnknown
 	C.ulDestroyRenderer(crenderer)
 }
 
-// UlUpdate function as declared in Ultralight/CAPI.h:255
+// UlUpdate function as declared in Ultralight/CAPI.h:279
 func UlUpdate(renderer ULRenderer) {
 	crenderer, _ := *(*C.ULRenderer)(unsafe.Pointer(&renderer)), cgoAllocsUnknown
 	C.ulUpdate(crenderer)
 }
 
-// UlRender function as declared in Ultralight/CAPI.h:260
+// UlRender function as declared in Ultralight/CAPI.h:284
 func UlRender(renderer ULRenderer) {
 	crenderer, _ := *(*C.ULRenderer)(unsafe.Pointer(&renderer)), cgoAllocsUnknown
 	C.ulRender(crenderer)
 }
 
-// UlCreateView function as declared in Ultralight/CAPI.h:269
+// UlCreateView function as declared in Ultralight/CAPI.h:293
 func UlCreateView(renderer ULRenderer, width uint32, height uint32, transparent bool) ULView {
 	crenderer, _ := *(*C.ULRenderer)(unsafe.Pointer(&renderer)), cgoAllocsUnknown
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
@@ -455,13 +511,13 @@ func UlCreateView(renderer ULRenderer, width uint32, height uint32, transparent
 	return __v
 }
 
-// UlDestroyView function as declared in Ultralight/CAPI.h:275
+// UlDestroyView function as declared in Ultralight/CAPI.h:299
 func UlDestroyView(view ULView) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	C.ulDestroyView(cview)
 }
 
-// UlViewGetURL function as declared in Ultralight/CAPI.h:282
+// UlViewGetURL function as declared in Ultralight/CAPI.h:306
 func UlViewGetURL(view ULView) ULString {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewGetURL(cview)
@@ -469,7 +525,7 @@ func UlViewGetURL(view ULView) ULString {
 	return __v
 }
 
-// UlViewGetTitle function as declared in Ultralight/CAPI.h:289
+// UlViewGetTitle function as declared in Ultralight/CAPI.h:313
 func UlViewGetTitle(view ULView) ULString {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewGetTitle(cview)
@@ -477,7 +533,7 @@ func UlViewGetTitle(view ULView) ULString {
 	return __v
 }
 
-// UlViewIsLoading function as declared in Ultralight/CAPI.h:294
+// UlViewIsLoading function as declared in Ultralight/CAPI.h:318
 func UlViewIsLoading(view ULView) bool {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewIsLoading(cview)
@@ -485,7 +541,7 @@ func UlViewIsLoading(view ULView) bool {
 	return __v
 }
 
-// UlViewIsBitmapDirty function as declared in Ultralight/CAPI.h:299
+// UlViewIsBitmapDirty function as declared in Ultralight/CAPI.h:323
 func UlViewIsBitmapDirty(view ULView) bool {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewIsBitmapDirty(cview)
@@ -493,7 +549,7 @@ func UlViewIsBitmapDirty(view ULView) bool {
 	return __v
 }
 
-// UlViewGetBitmap function as declared in Ultralight/CAPI.h:306
+// UlViewGetBitmap function as declared in Ultralight/CAPI.h:330
 func UlViewGetBitmap(view ULView) ULBitmap {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewGetBitmap(cview)
@@ -501,21 +557,21 @@ func UlViewGetBitmap(view ULView) ULBitmap {
 	return __v
 }
 
-// UlViewLoadHTML function as declared in Ultralight/CAPI.h:311
+// UlViewLoadHTML function as declared in Ultralight/CAPI.h:335
 func UlViewLoadHTML(view ULView, html_string ULString) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	chtml_string, _ := *(*C.ULString)(unsafe.Pointer(&html_string)), cgoAllocsUnknown
 	C.ulViewLoadHTML(cview, chtml_string)
 }
 
-// UlViewLoadURL function as declared in Ultralight/CAPI.h:316
+// UlViewLoadURL function as declared in Ultralight/CAPI.h:340
 func UlViewLoadURL(view ULView, url_string ULString) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	curl_string, _ := *(*C.ULString)(unsafe.Pointer(&url_string)), cgoAllocsUnknown
 	C.ulViewLoadURL(cview, curl_string)
 }
 
-// UlViewResize function as declared in Ultralight/CAPI.h:321
+// UlViewResize function as declared in Ultralight/CAPI.h:345
 func UlViewResize(view ULView, width uint32, height uint32) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
@@ -523,7 +579,7 @@ func UlViewResize(view ULView, width uint32, height uint32) {
 	C.ulViewResize(cview, cwidth, cheight)
 }
 
-// UlViewGetJSContext function as declared in Ultralight/CAPI.h:327
+// UlViewGetJSContext function as declared in Ultralight/CAPI.h:351
 func UlViewGetJSContext(view ULView) JSContextRef {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewGetJSContext(cview)
@@ -531,7 +587,7 @@ func UlViewGetJSContext(view ULView) JSContextRef {
 	return __v
 }
 
-// UlViewEvaluateScript function as declared in Ultralight/CAPI.h:332
+// UlViewEvaluateScript function as declared in Ultralight/CAPI.h:356
 func UlViewEvaluateScript(view ULView, js_string ULString) JSValueRef {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	cjs_string, _ := *(*C.ULString)(unsafe.Pointer(&js_string)), cgoAllocsUnknown
@@ -540,7 +596,7 @@ func UlViewEvaluateScript(view ULView, js_string ULString) JSValueRef {
 	return __v
 }
 
-// UlViewCanGoBack function as declared in Ultralight/CAPI.h:337
+// UlViewCanGoBack function as declared in Ultralight/CAPI.h:361
 func UlViewCanGoBack(view ULView) bool {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewCanGoBack(cview)
@@ -548,7 +604,7 @@ func UlViewCanGoBack(view ULView) bool {
 	return __v
 }
 
-// UlViewCanGoForward function as declared in Ultralight/CAPI.h:342
+// UlViewCanGoForward function as declared in Ultralight/CAPI.h:366
 func UlViewCanGoForward(view ULView) bool {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewCanGoForward(cview)
@@ -556,59 +612,59 @@ func UlViewCanGoForward(view ULView) bool {
 	return __v
 }
 
-// UlViewGoBack function as declared in Ultralight/CAPI.h:347
+// UlViewGoBack function as declared in Ultralight/CAPI.h:371
 func UlViewGoBack(view ULView) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	C.ulViewGoBack(cview)
 }
 
-// UlViewGoForward function as declared in Ultralight/CAPI.h:352
+// UlViewGoForward function as declared in Ultralight/CAPI.h:376
 func UlViewGoForward(view ULView) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	C.ulViewGoForward(cview)
 }
 
-// UlViewGoToHistoryOffset function as declared in Ultralight/CAPI.h:357
+// UlViewGoToHistoryOffset function as declared in Ultralight/CAPI.h:381
 func UlViewGoToHistoryOffset(view ULView, offset int32) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	coffset, _ := (C.int)(offset), cgoAllocsUnknown
 	C.ulViewGoToHistoryOffset(cview, coffset)
 }
 
-// UlViewReload function as declared in Ultralight/CAPI.h:362
+// UlViewReload function as declared in Ultralight/CAPI.h:386
 func UlViewReload(view ULView) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	C.ulViewReload(cview)
 }
 
-// UlViewStop function as declared in Ultralight/CAPI.h:367
+// UlViewStop function as declared in Ultralight/CAPI.h:391
 func UlViewStop(view ULView) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	C.ulViewStop(cview)
 }
 
-// UlViewFireKeyEvent function as declared in Ultralight/CAPI.h:372
+// UlViewFireKeyEvent function as declared in Ultralight/CAPI.h:396
 func UlViewFireKeyEvent(view ULView, key_event ULKeyEvent) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ckey_event, _ := *(*C.ULKeyEvent)(unsafe.Pointer(&key_event)), cgoAllocsUnknown
 	C.ulViewFireKeyEvent(cview, ckey_event)
 }
 
-// UlViewFireMouseEvent function as declared in Ultralight/CAPI.h:377
+// UlViewFireMouseEvent function as declared in Ultralight/CAPI.h:401
 func UlViewFireMouseEvent(view ULView, mouse_event ULMouseEvent) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	cmouse_event, _ := *(*C.ULMouseEvent)(unsafe.Pointer(&mouse_event)), cgoAllocsUnknown
 	C.ulViewFireMouseEvent(cview, cmouse_event)
 }
 
-// UlViewFireScrollEvent function as declared in Ultralight/CAPI.h:382
+// UlViewFireScrollEvent function as declared in Ultralight/CAPI.h:406
 func UlViewFireScrollEvent(view ULView, scroll_event ULScrollEvent) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	cscroll_event, _ := *(*C.ULScrollEvent)(unsafe.Pointer(&scroll_event)), cgoAllocsUnknown
 	C.ulViewFireScrollEvent(cview, cscroll_event)
 }
 
-// UlViewSetChangeTitleCallback function as declared in Ultralight/CAPI.h:390
+// UlViewSetChangeTitleCallback function as declared in Ultralight/CAPI.h:414
 func UlViewSetChangeTitleCallback(view ULView, callback ULChangeTitleCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -616,7 +672,7 @@ func UlViewSetChangeTitleCallback(view ULView, callback ULChangeTitleCallback, u
 	C.ulViewSetChangeTitleCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetChangeURLCallback function as declared in Ultralight/CAPI.h:400
+// UlViewSetChangeURLCallback function as declared in Ultralight/CAPI.h:424
 func UlViewSetChangeURLCallback(view ULView, callback ULChangeURLCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -624,7 +680,7 @@ func UlViewSetChangeURLCallback(view ULView, callback ULChangeURLCallback, user_
 	C.ulViewSetChangeURLCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetChangeTooltipCallback function as declared in Ultralight/CAPI.h:410
+// UlViewSetChangeTooltipCallback function as declared in Ultralight/CAPI.h:434
 func UlViewSetChangeTooltipCallback(view ULView, callback ULChangeTooltipCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -632,7 +688,7 @@ func UlViewSetChangeTooltipCallback(view ULView, callback ULChangeTooltipCallbac
 	C.ulViewSetChangeTooltipCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetChangeCursorCallback function as declared in Ultralight/CAPI.h:420
+// UlViewSetChangeCursorCallback function as declared in Ultralight/CAPI.h:444
 func UlViewSetChangeCursorCallback(view ULView, callback ULChangeCursorCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -640,7 +696,7 @@ func UlViewSetChangeCursorCallback(view ULView, callback ULChangeCursorCallback,
 	C.ulViewSetChangeCursorCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetAddConsoleMessageCallback function as declared in Ultralight/CAPI.h:435
+// UlViewSetAddConsoleMessageCallback function as declared in Ultralight/CAPI.h:459
 func UlViewSetAddConsoleMessageCallback(view ULView, callback ULAddConsoleMessageCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -648,7 +704,7 @@ func UlViewSetAddConsoleMessageCallback(view ULView, callback ULAddConsoleMessag
 	C.ulViewSetAddConsoleMessageCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetBeginLoadingCallback function as declared in Ultralight/CAPI.h:445
+// UlViewSetBeginLoadingCallback function as declared in Ultralight/CAPI.h:469
 func UlViewSetBeginLoadingCallback(view ULView, callback ULBeginLoadingCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -656,7 +712,7 @@ func UlViewSetBeginLoadingCallback(view ULView, callback ULBeginLoadingCallback,
 	C.ulViewSetBeginLoadingCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetFinishLoadingCallback function as declared in Ultralight/CAPI.h:455
+// UlViewSetFinishLoadingCallback function as declared in Ultralight/CAPI.h:479
 func UlViewSetFinishLoadingCallback(view ULView, callback ULFinishLoadingCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -664,7 +720,7 @@ func UlViewSetFinishLoadingCallback(view ULView, callback ULFinishLoadingCallbac
 	C.ulViewSetFinishLoadingCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetUpdateHistoryCallback function as declared in Ultralight/CAPI.h:465
+// UlViewSetUpdateHistoryCallback function as declared in Ultralight/CAPI.h:489
 func UlViewSetUpdateHistoryCallback(view ULView, callback ULUpdateHistoryCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -672,7 +728,7 @@ func UlViewSetUpdateHistoryCallback(view ULView, callback ULUpdateHistoryCallbac
 	C.ulViewSetUpdateHistoryCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetDOMReadyCallback function as declared in Ultralight/CAPI.h:476
+// UlViewSetDOMReadyCallback function as declared in Ultralight/CAPI.h:500
 func UlViewSetDOMReadyCallback(view ULView, callback ULDOMReadyCallback, user_data unsafe.Pointer) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	ccallback, _ := callback.PassValue()
@@ -680,14 +736,14 @@ func UlViewSetDOMReadyCallback(view ULView, callback ULDOMReadyCallback, user_da
 	C.ulViewSetDOMReadyCallback(cview, ccallback, cuser_data)
 }
 
-// UlViewSetNeedsPaint function as declared in Ultralight/CAPI.h:487
+// UlViewSetNeedsPaint function as declared in Ultralight/CAPI.h:511
 func UlViewSetNeedsPaint(view ULView, needs_paint bool) {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	cneeds_paint, _ := (C._Bool)(needs_paint), cgoAllocsUnknown
 	C.ulViewSetNeedsPaint(cview, cneeds_paint)
 }
 
-// UlViewGetNeedsPaint function as declared in Ultralight/CAPI.h:492
+// UlViewGetNeedsPaint function as declared in Ultralight/CAPI.h:516
 func UlViewGetNeedsPaint(view ULView) bool {
 	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
 	__ret := C.ulViewGetNeedsPaint(cview)
@@ -695,7 +751,15 @@ func UlViewGetNeedsPaint(view ULView) bool {
 	return __v
 }
 
-// UlCreateString function as declared in Ultralight/CAPI.h:501
+// UlViewCreateInspectorView function as declared in Ultralight/CAPI.h:531
+func UlViewCreateInspectorView(view ULView) ULView {
+	cview, _ := *(*C.ULView)(unsafe.Pointer(&view)), cgoAllocsUnknown
+	__ret := C.ulViewCreateInspectorView(cview)
+	__v := *(*ULView)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// UlCreateString function as declared in Ultralight/CAPI.h:540
 func UlCreateString(str string) ULString {
 	str = safeString(str)
 	cstr, _ := unpackPCharString(str)
@@ -705,7 +769,7 @@ func UlCreateString(str string) ULString {
 	return __v
 }
 
-// UlCreateStringUTF8 function as declared in Ultralight/CAPI.h:506
+// UlCreateStringUTF8 function as declared in Ultralight/CAPI.h:545
 func UlCreateStringUTF8(str string, len uint) ULString {
 	str = safeString(str)
 	cstr, _ := unpackPCharString(str)
@@ -716,7 +780,7 @@ func UlCreateStringUTF8(str string, len uint) ULString {
 	return __v
 }
 
-// UlCreateStringUTF16 function as declared in Ultralight/CAPI.h:511
+// UlCreateStringUTF16 function as declared in Ultralight/CAPI.h:550
 func UlCreateStringUTF16(str []ULChar16, len uint) ULString {
 	cstr, _ := (*C.ULChar16)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&str)).Data)), cgoAllocsUnknown
 	clen, _ := (C.size_t)(len), cgoAllocsUnknown
@@ -725,13 +789,13 @@ func UlCreateStringUTF16(str []ULChar16, len uint) ULString {
 	return __v
 }
 
-// UlDestroyString function as declared in Ultralight/CAPI.h:516
+// UlDestroyString function as declared in Ultralight/CAPI.h:555
 func UlDestroyString(str ULString) {
 	cstr, _ := *(*C.ULString)(unsafe.Pointer(&str)), cgoAllocsUnknown
 	C.ulDestroyString(cstr)
 }
 
-// UlStringGetData function as declared in Ultralight/CAPI.h:521
+// UlStringGetData function as declared in Ultralight/CAPI.h:560
 func UlStringGetData(str ULString) *ULChar16 {
 	cstr, _ := *(*C.ULString)(unsafe.Pointer(&str)), cgoAllocsUnknown
 	__ret := C.ulStringGetData(cstr)
@@ -739,7 +803,7 @@ func UlStringGetData(str ULString) *ULChar16 {
 	return __v
 }
 
-// UlStringGetLength function as declared in Ultralight/CAPI.h:526
+// UlStringGetLength function as declared in Ultralight/CAPI.h:565
 func UlStringGetLength(str ULString) uint {
 	cstr, _ := *(*C.ULString)(unsafe.Pointer(&str)), cgoAllocsUnknown
 	__ret := C.ulStringGetLength(cstr)
@@ -747,7 +811,7 @@ func UlStringGetLength(str ULString) uint {
 	return __v
 }
 
-// UlStringIsEmpty function as declared in Ultralight/CAPI.h:531
+// UlStringIsEmpty function as declared in Ultralight/CAPI.h:570
 func UlStringIsEmpty(str ULString) bool {
 	cstr, _ := *(*C.ULString)(unsafe.Pointer(&str)), cgoAllocsUnknown
 	__ret := C.ulStringIsEmpty(cstr)
@@ -755,14 +819,14 @@ func UlStringIsEmpty(str ULString) bool {
 	return __v
 }
 
-// UlCreateEmptyBitmap function as declared in Ultralight/CAPI.h:540
+// UlCreateEmptyBitmap function as declared in Ultralight/CAPI.h:579
 func UlCreateEmptyBitmap() ULBitmap {
 	__ret := C.ulCreateEmptyBitmap()
 	__v := *(*ULBitmap)(unsafe.Pointer(&__ret))
 	return __v
 }
 
-// UlCreateBitmap function as declared in Ultralight/CAPI.h:545
+// UlCreateBitmap function as declared in Ultralight/CAPI.h:584
 func UlCreateBitmap(width uint32, height uint32, format ULBitmapFormat) ULBitmap {
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
 	cheight, _ := (C.uint)(height), cgoAllocsUnknown
@@ -772,7 +836,7 @@ func UlCreateBitmap(width uint32, height uint32, format ULBitmapFormat) ULBitmap
 	return __v
 }
 
-// UlCreateBitmapFromPixels function as declared in Ultralight/CAPI.h:552
+// UlCreateBitmapFromPixels function as declared in Ultralight/CAPI.h:591
 func UlCreateBitmapFromPixels(width uint32, height uint32, format ULBitmapFormat, row_bytes uint32, pixels unsafe.Pointer, size uint, should_copy bool) ULBitmap {
 	cwidth, _ := (C.uint)(width), cgoAllocsUnknown
 	cheight, _ := (C.uint)(height), cgoAllocsUnknown
@@ -786,7 +850,7 @@ func UlCreateBitmapFromPixels(width uint32, height uint32, format ULBitmapFormat
 	return __v
 }
 
-// UlCreateBitmapFromCopy function as declared in Ultralight/CAPI.h:562
+// UlCreateBitmapFromCopy function as declared in Ultralight/CAPI.h:601
 func UlCreateBitmapFromCopy(existing_bitmap ULBitmap) ULBitmap {
 	cexisting_bitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&existing_bitmap)), cgoAllocsUnknown
 	__ret := C.ulCreateBitmapFromCopy(cexisting_bitmap)
@@ -794,13 +858,13 @@ func UlCreateBitmapFromCopy(existing_bitmap ULBitmap) ULBitmap {
 	return __v
 }
 
-// UlDestroyBitmap function as declared in Ultralight/CAPI.h:568
+// UlDestroyBitmap function as declared in Ultralight/CAPI.h:607
 func UlDestroyBitmap(bitmap ULBitmap) {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	C.ulDestroyBitmap(cbitmap)
 }
 
-// UlBitmapGetWidth function as declared in Ultralight/CAPI.h:573
+// UlBitmapGetWidth function as declared in Ultralight/CAPI.h:612
 func UlBitmapGetWidth(bitmap ULBitmap) uint32 {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetWidth(cbitmap)
@@ -808,7 +872,7 @@ func UlBitmapGetWidth(bitmap ULBitmap) uint32 {
 	return __v
 }
 
-// UlBitmapGetHeight function as declared in Ultralight/CAPI.h:578
+// UlBitmapGetHeight function as declared in Ultralight/CAPI.h:617
 func UlBitmapGetHeight(bitmap ULBitmap) uint32 {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetHeight(cbitmap)
@@ -816,7 +880,7 @@ func UlBitmapGetHeight(bitmap ULBitmap) uint32 {
 	return __v
 }
 
-// UlBitmapGetFormat function as declared in Ultralight/CAPI.h:583
+// UlBitmapGetFormat function as declared in Ultralight/CAPI.h:622
 func UlBitmapGetFormat(bitmap ULBitmap) ULBitmapFormat {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetFormat(cbitmap)
@@ -824,7 +888,7 @@ func UlBitmapGetFormat(bitmap ULBitmap) ULBitmapFormat {
 	return __v
 }
 
-// UlBitmapGetBpp function as declared in Ultralight/CAPI.h:588
+// UlBitmapGetBpp function as declared in Ultralight/CAPI.h:627
 func UlBitmapGetBpp(bitmap ULBitmap) uint32 {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetBpp(cbitmap)
@@ -832,7 +896,7 @@ func UlBitmapGetBpp(bitmap ULBitmap) uint32 {
 	return __v
 }
 
-// UlBitmapGetRowBytes function as declared in Ultralight/CAPI.h:593
+// UlBitmapGetRowBytes function as declared in Ultralight/CAPI.h:632
 func UlBitmapGetRowBytes(bitmap ULBitmap) uint32 {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetRowBytes(cbitmap)
@@ -840,7 +904,7 @@ func UlBitmapGetRowBytes(bitmap ULBitmap) uint32 {
 	return __v
 }
 
-// UlBitmapGetSize function as declared in Ultralight/CAPI.h:598
+// UlBitmapGetSize function as declared in Ultralight/CAPI.h:637
 func UlBitmapGetSize(bitmap ULBitmap) uint {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapGetSize(cbitmap)
@@ -848,7 +912,7 @@ func UlBitmapGetSize(bitmap ULBitmap) uint {
 	return __v
 }
 
-// UlBitmapOwnsPixels function as declared in Ultralight/CAPI.h:603
+// UlBitmapOwnsPixels function as declared in Ultralight/CAPI.h:642
 func UlBitmapOwnsPixels(bitmap ULBitmap) bool {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapOwnsPixels(cbitmap)
@@ -856,7 +920,7 @@ func UlBitmapOwnsPixels(bitmap ULBitmap) bool {
 	return __v
 }
 
-// UlBitmapLockPixels function as declared in Ultralight/CAPI.h:608
+// UlBitmapLockPixels function as declared in Ultralight/CAPI.h:647
 func UlBitmapLockPixels(bitmap ULBitmap) unsafe.Pointer {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapLockPixels(cbitmap)
@@ -864,13 +928,13 @@ func UlBitmapLockPixels(bitmap ULBitmap) unsafe.Pointer {
 	return __v
 }
 
-// UlBitmapUnlockPixels function as declared in Ultralight/CAPI.h:613
+// UlBitmapUnlockPixels function as declared in Ultralight/CAPI.h:652
 func UlBitmapUnlockPixels(bitmap ULBitmap) {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	C.ulBitmapUnlockPixels(cbitmap)
 }
 
-// UlBitmapRawPixels function as declared in Ultralight/CAPI.h:619
+// UlBitmapRawPixels function as declared in Ultralight/CAPI.h:658
 func UlBitmapRawPixels(bitmap ULBitmap) unsafe.Pointer {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapRawPixels(cbitmap)
@@ -878,7 +942,7 @@ func UlBitmapRawPixels(bitmap ULBitmap) unsafe.Pointer {
 	return __v
 }
 
-// UlBitmapIsEmpty function as declared in Ultralight/CAPI.h:624
+// UlBitmapIsEmpty function as declared in Ultralight/CAPI.h:663
 func UlBitmapIsEmpty(bitmap ULBitmap) bool {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	__ret := C.ulBitmapIsEmpty(cbitmap)
@@ -886,13 +950,13 @@ func UlBitmapIsEmpty(bitmap ULBitmap) bool {
 	return __v
 }
 
-// UlBitmapErase function as declared in Ultralight/CAPI.h:629
+// UlBitmapErase function as declared in Ultralight/CAPI.h:668
 func UlBitmapErase(bitmap ULBitmap) {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	C.ulBitmapErase(cbitmap)
 }
 
-// UlBitmapWritePNG function as declared in Ultralight/CAPI.h:634
+// UlBitmapWritePNG function as declared in Ultralight/CAPI.h:673
 func UlBitmapWritePNG(bitmap ULBitmap, path string) bool {
 	cbitmap, _ := *(*C.ULBitmap)(unsafe.Pointer(&bitmap)), cgoAllocsUnknown
 	path = safeString(path)
@@ -903,7 +967,7 @@ func UlBitmapWritePNG(bitmap ULBitmap, path string) bool {
 	return __v
 }
 
-// UlCreateKeyEvent function as declared in Ultralight/CAPI.h:643
+// UlCreateKeyEvent function as declared in Ultralight/CAPI.h:682
 func UlCreateKeyEvent(_type ULKeyEventType, modifiers uint32, virtual_key_code int32, native_key_code int32, text ULString, unmodified_text ULString, is_keypad bool, is_auto_repeat bool, is_system_key bool) ULKeyEvent {
 	c_type, _ := (C.ULKeyEventType)(_type), cgoAllocsUnknown
 	cmodifiers, _ := (C.uint)(modifiers), cgoAllocsUnknown
@@ -919,13 +983,13 @@ func UlCreateKeyEvent(_type ULKeyEventType, modifiers uint32, virtual_key_code i
 	return __v
 }
 
-// UlDestroyKeyEvent function as declared in Ultralight/CAPI.h:669
+// UlDestroyKeyEvent function as declared in Ultralight/CAPI.h:708
 func UlDestroyKeyEvent(evt ULKeyEvent) {
 	cevt, _ := *(*C.ULKeyEvent)(unsafe.Pointer(&evt)), cgoAllocsUnknown
 	C.ulDestroyKeyEvent(cevt)
 }
 
-// UlCreateMouseEvent function as declared in Ultralight/CAPI.h:678
+// UlCreateMouseEvent function as declared in Ultralight/CAPI.h:717
 func UlCreateMouseEvent(_type ULMouseEventType, x int32, y int32, button ULMouseButton) ULMouseEvent {
 	c_type, _ := (C.ULMouseEventType)(_type), cgoAllocsUnknown
 	cx, _ := (C.int)(x), cgoAllocsUnknown
@@ -936,13 +1000,13 @@ func UlCreateMouseEvent(_type ULMouseEventType, x int32, y int32, button ULMouse
 	return __v
 }
 
-// UlDestroyMouseEvent function as declared in Ultralight/CAPI.h:684
+// UlDestroyMouseEvent function as declared in Ultralight/CAPI.h:723
 func UlDestroyMouseEvent(evt ULMouseEvent) {
 	cevt, _ := *(*C.ULMouseEvent)(unsafe.Pointer(&evt)), cgoAllocsUnknown
 	C.ulDestroyMouseEvent(cevt)
 }
 
-// UlCreateScrollEvent function as declared in Ultralight/CAPI.h:693
+// UlCreateScrollEvent function as declared in Ultralight/CAPI.h:732
 func UlCreateScrollEvent(_type ULScrollEventType, delta_x int32, delta_y int32) ULScrollEvent {
 	c_type, _ := (C.ULScrollEventType)(_type), cgoAllocsUnknown
 	cdelta_x, _ := (C.int)(delta_x), cgoAllocsUnknown
@@ -952,7 +1016,7 @@ func UlCreateScrollEvent(_type ULScrollEventType, delta_x int32, delta_y int32)
 	return __v
 }
 
-// UlDestroyScrollEvent function as declared in Ultralight/CAPI.h:699
+// UlDestroyScrollEvent function as declared in Ultralight/CAPI.h:738
 func UlDestroyScrollEvent(evt ULScrollEvent) {
 	cevt, _ := *(*C.ULScrollEvent)(unsafe.Pointer(&evt)), cgoAllocsUnknown
 	C.ulDestroyScrollEvent(cevt)
@@ -1473,6 +1537,16 @@ func JSValueIsDate(ctx JSContextRef, value JSValueRef) bool {
 	return __v
 }
 
+// JSValueGetTypedArrayType function as declared in JavaScriptCore/JSValueRef.h:188
+func JSValueGetTypedArrayType(ctx JSContextRef, value JSValueRef, exception []JSValueRef) JSTypedArrayType {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cvalue, _ := *(*C.JSValueRef)(unsafe.Pointer(&value)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSValueGetTypedArrayType(cctx, cvalue, cexception)
+	__v := (JSTypedArrayType)(__ret)
+	return __v
+}
+
 // JSValueIsEqual function as declared in JavaScriptCore/JSValueRef.h:201
 func JSValueIsEqual(ctx JSContextRef, a JSValueRef, b JSValueRef, exception []JSValueRef) bool {
 	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
@@ -1707,3 +1781,135 @@ func JSStringIsEqualToUTF8CString(a JSStringRef, b string) bool {
 	__v := (bool)(__ret)
 	return __v
 }
+
+// JSObjectMakeTypedArray function as declared in JavaScriptCore/JSTypedArray.h:48
+func JSObjectMakeTypedArray(ctx JSContextRef, arrayType JSTypedArrayType, length uint, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	carrayType, _ := (C.JSTypedArrayType)(arrayType), cgoAllocsUnknown
+	clength, _ := (C.size_t)(length), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectMakeTypedArray(cctx, carrayType, clength, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectMakeTypedArrayWithBytesNoCopy function as declared in JavaScriptCore/JSTypedArray.h:63
+func JSObjectMakeTypedArrayWithBytesNoCopy(ctx JSContextRef, arrayType JSTypedArrayType, bytes unsafe.Pointer, byteLength uint, bytesDeallocator JSTypedArrayBytesDeallocator, deallocatorContext unsafe.Pointer, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	carrayType, _ := (C.JSTypedArrayType)(arrayType), cgoAllocsUnknown
+	cbytes, _ := bytes, cgoAllocsUnknown
+	cbyteLength, _ := (C.size_t)(byteLength), cgoAllocsUnknown
+	cbytesDeallocator, _ := bytesDeallocator.PassValue()
+	cdeallocatorContext, _ := deallocatorContext, cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectMakeTypedArrayWithBytesNoCopy(cctx, carrayType, cbytes, cbyteLength, cbytesDeallocator, cdeallocatorContext, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectMakeTypedArrayWithArrayBuffer function as declared in JavaScriptCore/JSTypedArray.h:74
+func JSObjectMakeTypedArrayWithArrayBuffer(ctx JSContextRef, arrayType JSTypedArrayType, buffer JSObjectRef, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	carrayType, _ := (C.JSTypedArrayType)(arrayType), cgoAllocsUnknown
+	cbuffer, _ := *(*C.JSObjectRef)(unsafe.Pointer(&buffer)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectMakeTypedArrayWithArrayBuffer(cctx, carrayType, cbuffer, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectMakeTypedArrayWithArrayBufferAndOffset function as declared in JavaScriptCore/JSTypedArray.h:87
+func JSObjectMakeTypedArrayWithArrayBufferAndOffset(ctx JSContextRef, arrayType JSTypedArrayType, buffer JSObjectRef, byteOffset uint, length uint, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	carrayType, _ := (C.JSTypedArrayType)(arrayType), cgoAllocsUnknown
+	cbuffer, _ := *(*C.JSObjectRef)(unsafe.Pointer(&buffer)), cgoAllocsUnknown
+	cbyteOffset, _ := (C.size_t)(byteOffset), cgoAllocsUnknown
+	clength, _ := (C.size_t)(length), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectMakeTypedArrayWithArrayBufferAndOffset(cctx, carrayType, cbuffer, cbyteOffset, clength, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectGetTypedArrayBytesPtr function as declared in JavaScriptCore/JSTypedArray.h:98
+func JSObjectGetTypedArrayBytesPtr(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) unsafe.Pointer {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetTypedArrayBytesPtr(cctx, cobject, cexception)
+	__v := *(*unsafe.Pointer)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectGetTypedArrayLength function as declared in JavaScriptCore/JSTypedArray.h:108
+func JSObjectGetTypedArrayLength(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) uint {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetTypedArrayLength(cctx, cobject, cexception)
+	__v := (uint)(__ret)
+	return __v
+}
+
+// JSObjectGetTypedArrayByteLength function as declared in JavaScriptCore/JSTypedArray.h:118
+func JSObjectGetTypedArrayByteLength(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) uint {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetTypedArrayByteLength(cctx, cobject, cexception)
+	__v := (uint)(__ret)
+	return __v
+}
+
+// JSObjectGetTypedArrayByteOffset function as declared in JavaScriptCore/JSTypedArray.h:128
+func JSObjectGetTypedArrayByteOffset(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) uint {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetTypedArrayByteOffset(cctx, cobject, cexception)
+	__v := (uint)(__ret)
+	return __v
+}
+
+// JSObjectGetTypedArrayBuffer function as declared in JavaScriptCore/JSTypedArray.h:138
+func JSObjectGetTypedArrayBuffer(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetTypedArrayBuffer(cctx, cobject, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectMakeArrayBufferWithBytesNoCopy function as declared in JavaScriptCore/JSTypedArray.h:154
+func JSObjectMakeArrayBufferWithBytesNoCopy(ctx JSContextRef, bytes unsafe.Pointer, byteLength uint, bytesDeallocator JSTypedArrayBytesDeallocator, deallocatorContext unsafe.Pointer, exception []JSValueRef) JSObjectRef {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cbytes, _ := bytes, cgoAllocsUnknown
+	cbyteLength, _ := (C.size_t)(byteLength), cgoAllocsUnknown
+	cbytesDeallocator, _ := bytesDeallocator.PassValue()
+	cdeallocatorContext, _ := deallocatorContext, cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectMakeArrayBufferWithBytesNoCopy(cctx, cbytes, cbyteLength, cbytesDeallocator, cdeallocatorContext, cexception)
+	__v := *(*JSObjectRef)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectGetArrayBufferBytesPtr function as declared in JavaScriptCore/JSTypedArray.h:164
+func JSObjectGetArrayBufferBytesPtr(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) unsafe.Pointer {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetArrayBufferBytesPtr(cctx, cobject, cexception)
+	__v := *(*unsafe.Pointer)(unsafe.Pointer(&__ret))
+	return __v
+}
+
+// JSObjectGetArrayBufferByteLength function as declared in JavaScriptCore/JSTypedArray.h:174
+func JSObjectGetArrayBufferByteLength(ctx JSContextRef, object JSObjectRef, exception []JSValueRef) uint {
+	cctx, _ := *(*C.JSContextRef)(unsafe.Pointer(&ctx)), cgoAllocsUnknown
+	cobject, _ := *(*C.JSObjectRef)(unsafe.Pointer(&object)), cgoAllocsUnknown
+	cexception, _ := (*C.JSValueRef)(unsafe.Pointer((*sliceHeader)(unsafe.Pointer(&exception)).Data)), cgoAllocsUnknown
+	__ret := C.JSObjectGetArrayBufferByteLength(cctx, cobject, cexception)
+	__v := (uint)(__ret)
+	return __v
+}