Hubbry Logo
Presto (browser engine)Presto (browser engine)Main
Open search
Presto (browser engine)
Community hub
Presto (browser engine)
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Presto (browser engine)
Presto (browser engine)
from Wikipedia
Presto
DeveloperOpera Software ASA
Stable release
2.12.423 / 16 March 2015; 10 years ago (2015-03-16)[1]
Written inC++[2]
Operating systemLinux (non-free repositories) and Windows
TypeApplication framework, Browser engine
LicenseProprietary
Websitedev.opera.com

Presto was the browser engine of the Opera web browser from the release of Opera 7 on 28 January 2003, until the release of Opera 15 on 2 July 2013, at which time Opera switched to using the Blink engine that was originally created for Chromium.[3] Presto was also used to power the Opera Mini and Opera Mobile browsers.

Presto is a dynamic engine. Web pages can be re-rendered completely or partially in response to DOM events. Its releases saw a number of bug fixes and optimizations to improve the speed of the ECMAScript (JavaScript) engine. It is proprietary and only available as a part of the Opera browsers.

ECMAScript engines

[edit]

A succession of ECMAScript engines have been used with Opera. (For the origin of their names, see Cultural notes below.) Pre-Presto versions of Opera used the Linear A engine. Opera versions based on the Core fork of Presto, Opera 7.0 through 9.27, used the Linear B engine.[4] The Futhark engine is used in some versions on the Core 2 fork of Presto, namely Opera 9.5 to Opera 10.10.[5] When released it was the fastest engine around, but in 2008 a new generation of ECMAScript engines from Google (V8), Mozilla (SpiderMonkey), and Apple (JavaScriptCore) took one more step, introducing native code generation. This opened up for potential heavy computations on the client side and Futhark, though still fast and efficient, was unable to keep up.[original research?]

In early 2009, Opera introduced the Carakan engine. It featured register-based bytecode, native code generation, automatic object classification, and overall performance improvements.[6][7] Early access in the Opera 10.50 pre-alpha showed that it is as fast as the fastest competitors, being the winner in 2 out of the 3 most used benchmarks.[8]

History and development

[edit]
Presto Version ECMAScript engine Browser code name Opera Browser Opera Mobile Other use New features
pre Presto unnamed unnamed 3.0 The first version to support JavaScript[9]
pre Presto Linear A Elektra/unnamed[10][note 1] 4.0
1.0 Linear B unnamed 7.0 a completely new rendering engine, Favicon support[11]
8.5 "Bolton" version: 1st completely free download version (ad-free toolbar)
2.0 Merlin 9.0 Internet Channel[12] Canvas, Acid2 Test: passed, Rich text editing, XSLT, and XPath
2.1 Futhark Kestrel 9.5 9.5[13] Nintendo DSi Browser SVG Tiny 1.2, SVG as CSS, SVG as <img>, Audio object
2.1.1 9.6 Scope API,[14] SVG as Favicon
2.2 Peregrine 9.7[15]
2.2.15 10.0
10.1
9.8[16] Acid3 test: 100/100, pixel-perfect, Web fonts, CSS Selectors API, RGBA & HSLA opacity, TLS 1.2.,[17] FPS in SVG, SVG fonts in HTML
2.3 Opera Devices SDK 10 CSS3 : border-image, border-radius (rounded corners), box-shadow, transitions; HTML5: <audio> and <video> elements
2.4 10 CSS2.1: visibility:collapse; CSS3 : transforms; HTML5: <canvas> shadows, Web Database, Web Storage, window.btoa, and window.atob
2.5.24 Carakan Evenes 10.5 10.1 Opera Mini server CSS3: multiple backgrounds; HTML5: <canvas> Text
2.6.30 10.6 WebM; HTML5: AppCache, Geolocation, Web Workers[18]
2.7.62 Kjevik 11.0 11.0 Extensions, WebSocket
2.8.131 Barracuda 11.1 11.1 Opera Mini server 4.27 WebP, File API, CSS3 gradients (only for the background and background-image properties): -o-linear-gradient(), -o-repeating-linear-gradient(); Support for <color-stop> added.
2.9.168 Swordfish 11.5 Session history management, classList (DOMTokenList)
2.9.201 11.50 for Android ECMAscript strict mode
2.10.229 Tunny 11.6 11.6 HTML5 Parser, full support to CSS Gradients, Typed Arrays, CSS unit "rem"
2.10.254 Wahoo 12.0 WebGL and hardware acceleration[19]
2.10.289 12.0
2.11.355 Marlin 12.1 for Android SPDY, CSS3 Flexbox[20]
2.12.388 12.10–12.18
  1. ^ Elektra was originally the codename of Opera 4.0, but later came to refer more generally to the layout engine used in versions 3.5 through 6.

Presto-based applications

[edit]

Web browsers

[edit]

HTML editors

[edit]

Source code leak

[edit]

The source code for version 12.15 was leaked to GitHub on February 11, 2016.[27] It remained unnoticed until January 12, 2017 and was taken down two days later in response to a DMCA request.[28][29] Opera Software has confirmed the authenticity of the source code.[30]

It is currently available at https://git.drk.sc/presto/presto.

Cultural notes

[edit]

See also

[edit]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
Presto is a proprietary web browser layout engine developed by Opera Software, primarily used to render web pages in the Opera web browser from its introduction in Opera 7.0 on January 28, 2003, until its discontinuation with the release of Opera 15 on July 2, 2013. Designed in Oslo, Norway, starting in 1998 by key engineers including Geir Ivarsøy and Karl Anders Øygard, Presto emphasized speed, efficiency, and standards compliance, enabling Opera to pioneer compact browsers for mobile phones, televisions, and embedded devices. Over its decade-long lifespan, Presto evolved through multiple versions, incorporating advanced features such as the Carakan JavaScript engine in Presto 2.5 (Opera 10.50, 2010), support for video, CSS3 selectors, , Web Workers, Geolocation, and WebSockets, while achieving full compliance with the test in Presto 2.2 (Opera 10.00, 2009). It powered unique Opera innovations like Opera Turbo for data compression on slow connections and the developer tools for debugging. Presto's architecture allowed for dynamic page reflows and efficient rendering, contributing to Opera's reputation for lightweight performance, particularly in resource-constrained environments. The engine's development ceased in 2012 amid growing challenges in maintaining compatibility with rapidly evolving web standards, as web developers increasingly favored WebKit-specific features like the -webkit CSS prefix, which disadvantaged non-WebKit engines. Opera announced the switch to the open-source engine (later forked to Blink) in February 2013 to better support mobile platforms—especially , which mandates WebKit for third-party browsers—and to align with the dominant ecosystem used by Chrome and , allowing the company to focus resources on innovations rather than engine maintenance. Although no longer actively developed, legacy Presto-based Opera versions like 12.18 received security updates until 2016, and the engine persists in some older mobile and embedded devices.

Technical Overview

Core Architecture

Presto is a browser engine developed by Opera Software ASA, implemented primarily in C++ to emphasize high performance and compact binary size. This choice of language enabled efficient handling of complex rendering tasks while maintaining a footprint suitable for resource-constrained environments. The engine supported multiple platforms including Windows, , macOS, and various mobile and embedded systems, with official distributions provided through Opera's own repositories, often classified as non-free. A core feature of Presto's design is its dynamic rendering capability, which allows web pages or specific sections to be re-rendered in response to (DOM) events, facilitating incremental updates without requiring complete page reloads. This event-driven approach enhances and efficiency, as changes triggered by user actions or scripts propagate through the DOM to update the visual layout selectively. The engine's overall structure integrates a dedicated layout component with scripting subsystems, forming a cohesive pipeline for , rendering, and executing . This modular separates concerns such as /CSS processing from interpretation, promoting maintainability and targeted optimizations. Presto supported multi-platform deployment across its lifecycle, culminating in the final stable release, version 2.12.423, issued on March 16, 2015, as a security update for legacy installations. Architectural principles centered on event-driven to manage asynchronous interactions and modular components for rendering and scripting, ensuring responsive behavior in dynamic web applications while adhering to standards like W3C DOM for .

ECMAScript Engines

Presto's ECMAScript engines evolved through several iterations to handle execution, beginning with the Linear B engine in its early versions and progressing to more advanced implementations for improved performance and standards compliance. The initial engine for Presto, , served as a basic interpreter in versions 7.0 through 9.27, focusing on reliable parsing and execution of 3 code within the browser's scripting environment. It replaced the pre-Presto interpreter, providing foundational support for dynamic web scripting but with limited optimization for speed. Subsequent updates introduced Futhark in 9.50 to 10.10, an optimized interpreter that emphasized low memory usage and compact code footprint over raw execution speed. Futhark utilized a stack-based , enabling efficient handling of in resource-constrained scenarios while maintaining compatibility with 3. The most significant advancement came with Carakan, introduced in Opera 10.50 in and used through version 12.15. Carakan implemented a register-based , which reduced instruction overhead compared to stack-based approaches, leading to faster execution by minimizing data movement between registers and the stack. It also featured just-in-time () compilation with native code generation, leveraging static type analysis to optimize hot code paths, and provided full support for 5 features such as strict mode and advanced methods. For , Carakan employed per-tab heaps, allowing isolated garbage collection that accelerated cleanup operations by avoiding global scans across multiple contexts. Performance evaluations from 2009 to 2013 demonstrated Carakan's competitiveness; for instance, in the SunSpider benchmark, Opera 10.50 achieved scores approximately 20% faster than contemporary versions and over seven times faster than the prior Futhark engine in Opera 10.10. Similarly, in the V8 benchmark suite, Carakan enabled Opera to rival or exceed Firefox's TraceMonkey and Chrome's V8 in select tests, underscoring its efficiency in real-world workloads like DOM manipulation and algorithmic computations. These engines integrated seamlessly into Presto's scripting layer, which coordinated execution with the engine's dynamic rendering pipeline to support event-driven updates to the without full page reloads. This integration allowed Presto to process scripts inline with layout computations, enhancing responsiveness for interactive web applications.

History and Development

Origins and Early Versions

Presto was developed by Software ASA, a Norwegian company founded in 1995, as a successor to the Elektra rendering engine that powered earlier versions of the browser from 4.0 to 6.0. Development began in 1998 in , led by engineers including Geir Ivarsøy and Karl Anders Øygard, driven by the need to address limitations in Elektra's handling of evolving web standards, particularly improved support for CSS, client-side scripting, and the (DOM), while enhancing overall rendering speed to compete in an increasingly standards-focused web landscape. This in-house development allowed to maintain full control over the engine's evolution, enabling optimizations tailored to their browser's feature set, such as small footprint and efficiency on resource-constrained devices. The closed approach also enabled licensing to third-party applications like products. The engine made its debut with the release of 7.0 on January 28, 2003, exclusively for Windows at launch, marking a significant with dynamic page updates, drag-and-drop tab functionality, and initial support through the Linear B JavaScript engine—a step up from the pre-Presto Linear A used in prior versions. Presto's architecture emphasized modularity, allowing for faster parsing and rendering of complex pages compared to Elektra, and it introduced features like spatial navigation and page reflow to improve usability. A port followed shortly after with Opera 7.11 in May 2003, expanding accessibility but highlighting the engine's early Windows-centric focus. Early development faced challenges stemming from Presto's nature, which precluded contributions from the broader open-source community and concentrated all within Opera's limited engineering resources in . This approach restricted rapid adaptation to platform diversity; support for was delayed, and ports to other systems like Mac OS X arrived only with Opera 8 in 2005.

Key Milestones and Evolutions

In 2010, introduced the Carakan JavaScript engine with the release of Opera 10.50, representing a significant advancement in execution speed through features like and native code generation, which reportedly improved performance by up to seven times on benchmarks such as SunSpider compared to the previous Futhark engine. Subsequent versions from Opera 11 to 12, spanning 2011 to 2012, focused on rendering optimizations and broader standards compliance, including the introduction of in Opera 11.5 for smoother graphics handling on Windows systems with 2.x support, and further enhancements in Opera 12 with full GPU acceleration, a new parser, and support for features like the <video> element, , and full 5.1 implementation. During its peak usage period from 2010 to 2013, Presto-powered browsers achieved over 300 million monthly active users across desktop, mobile, and embedded platforms by early 2013, driven largely by the popularity of and in emerging markets. Internally, Presto's development faced challenges in sustaining a codebase against the rising dominance of open-source engines like and Blink, which allowed competitors to share resources and accelerate feature implementation, ultimately straining Opera's ability to match rapid web standards evolution without broader collaboration.

Standards Support and Features

Rendering Capabilities

Presto continued robust support for HTML standards, building on full compliance with 1.0 achieved in Opera 5.10 through its native handling of XML namespaces and strict parsing modes. For , support was partial but progressive; by Opera 10.50, the engine included native rendering for elements like <video> and <audio>, enabling playback of formats such as Ogg without plugins, while was added in Opera 10.60; Opera 11.60 added an parser, session history integration, and support for microdata DOM APIs. This culminated in Presto's achievement of a perfect 100/100 score on the test in stable releases like Opera 10.00 in 2009, demonstrating strong interoperability for , CSS, and DOM features. In terms of CSS, Presto fully implemented CSS 2.1, including advanced properties like visibility: collapse by Opera 10.50, ensuring reliable layout and styling for legacy web content. Partial CSS3 support was available through vendor-prefixed properties (e.g., -o- for transitions, animations, and transforms), with notable advancements in Opera 12.10 that enabled smooth rendering of flexbox layouts, gradients, and multi-column designs, though full standardization awaited broader adoption. These prefixes allowed developers to leverage emerging visual effects while maintaining backward compatibility. Presto offered native rendering for XML 1.0 from Opera 4.00, extending to XML 1.1, , and in Opera 9.00, facilitating structured document processing. For vector graphics, it supported SVG 1.1 Tiny starting in Opera 8.00, evolving to include Tiny 1.2 features like external references and CSS styling integration by Opera 9.50, enabling interactive and scalable visuals without external dependencies. This XML foundation also underpinned basic extensions resembling widgets for custom UI elements in Opera's ecosystem. Among its distinctive capabilities, Presto featured zoom-independent layouts through the "Fit to Width" mode, introduced in earlier versions and refined in 12, which dynamically reflowed text and adjusted to eliminate horizontal scrolling regardless of zoom level. Complementing this, its efficient reflow mechanisms, active since Opera 7.00, allowed partial or full page re-rendering in response to DOM changes with minimal performance overhead, leveraging the engine's dynamic architecture for responsive updates.

Performance and Innovations

Presto demonstrated notable performance advantages in several key benchmarks during the early 2010s, particularly in JavaScript execution and overall browser responsiveness. In the SunSpider JavaScript benchmark from October 2010, Opera using Presto ranked as a close second to Chrome's engine, outperforming Firefox's engine. Similarly, in the browser benchmark, Presto-powered Opera secured second place behind Chrome, surpassing both and Safari's implementations, with scores indicating superior handling of and DOM-related tasks. These results highlighted Presto's efficiency in DOM manipulation and page rendering, often achieving 20-30% faster execution in tests like Dromaeo compared to , contributing to quicker page loads on resource-limited hardware. One of Presto's key innovations was Opera Turbo, a server-side compression introduced in alongside Presto 2.2, designed to accelerate web browsing on mobile networks with limited bandwidth. By traffic through Opera's servers to compress pages, images, and scripts before delivery, Opera Turbo reduced data transfer by up to 80%, enabling faster loading times and improved performance on slow connections without sacrificing much visual fidelity. This feature was particularly impactful for mobile users, enhancing accessibility in regions with poor connectivity while integrating seamlessly with Presto's rendering pipeline. Presto also pioneered hardware acceleration for graphics rendering, starting with an updated Vega engine in Opera 10.50, which offloaded canvas 2D operations to the GPU for smoother animations and reduced CPU load. This allowed for more efficient handling of dynamic content, such as interactive charts and games, by leveraging native graphics APIs like . Building on this, Opera 12 in 2012 introduced experimental support within Presto 2.10, enabling hardware-accelerated 3D graphics in the browser and opening doors to advanced web applications like immersive visualizations. These advancements positioned Presto as a forward-thinking for , though its single-threaded rendering approach limited parallelism compared to contemporaries like , occasionally resulting in UI responsiveness issues on complex pages. In comparative terms, Presto excelled in memory efficiency, particularly on mobile devices, where its lightweight architecture consumed fewer resources than WebKit-based browsers like early Chrome versions, aiding battery life during extended sessions. For instance, with Presto was optimized for low-power environments, benefiting from features like Turbo to minimize data processing overhead and extend device runtime on limited batteries. However, as web complexity grew, Presto's resource footprint remained advantageous over in but trailed multi-process models in later forks for handling memory-intensive sites.

Applications

Web Browsers

Presto was primarily employed as the rendering engine in the Opera web browser family, powering both desktop and mobile variants during its active development period. The desktop Opera browser utilized Presto starting with version 7.0, released on January 28, 2003, and continued through version 12.15, released on April 4, 2013. Opera 15, launched on July 2, 2013, marked the full transition to the Blink engine. Mobile implementations included , which directly incorporated Presto for on-device rendering, and , which relied on server-side Presto rendering to optimize data usage and performance on low-bandwidth connections. This server-side approach in allowed Presto to handle page compression and layout remotely. Beyond Opera, Presto powered third-party browsers in gaming consoles, such as the Browser (initially released in on November 1, 2008, and in other regions in 2009) and the Internet Channel (launched on April 12, 2007). These implementations, based on customized versions of 9, provided web access tailored to the hardware constraints of the and systems, supporting core web standards through approximately 2011. At its height, browsers using Presto, particularly , achieved a global of approximately 2-3% on desktop platforms between 2010 and 2012, contributing to Opera's reputation for efficient rendering and innovative features.

Embedded and Specialized Uses

Presto found application in embedded systems and specialized tools beyond traditional desktop , leveraging its efficiency in resource-constrained environments. In gaming consoles, it powered the Browser, released in April 2009 as a co-developed solution by Software and , enabling touch-screen web access optimized for the device's limited processing power and memory. Similarly, the Channel, initially trialed in December 2006 and fully released for free download in April 2007 with enhancements in 2009, utilized Presto to deliver full on the console, incorporating features like USB keyboard support and pointer-based tailored to low-resource hardware. Presto was also integrated into portable devices, including the browser (released in 2005) and the browser in Sony's Mylo COM-1 device (2006), both based on customized versions of for mobile internet access. The integrated Presto for web content previewing in tools like , from MX to CS3 from 2002 to 2007, allowing designers to visualize layouts in a standards-compliant rendering environment. For broader embedded uses, 's Devices SDK, based on the Presto engine, facilitated integrations in set-top boxes and early smart TVs during the ; for instance, in 2010, it was deployed on PeerTV's Linux-based PeerStation STBs to enable web-enhanced TV experiences, including personalized content delivery. A notable specialized adaptation was in , which employed server-side rendering with Presto to compress web pages for feature phones with limited bandwidth and processing capabilities, reducing data usage by up to 90% through proxy-based optimization. This approach allowed access to full on low-end devices by rendering pages on Opera's servers using Presto before transmitting lightweight versions to the client. These implementations highlighted Presto's performance optimizations for low-power devices, such as dynamic re-rendering to minimize .

Discontinuation and Legacy

In February 2013, Opera Software announced plans to phase out its proprietary Presto rendering engine in favor of , the open-source engine powering browsers like and the then-current Chrome, along with contributions to the project. This shift was motivated by the substantial resources required to maintain Presto independently, allowing Opera to redirect efforts toward user interface innovations and faster feature delivery amid the web's accelerating evolution, including advancements in and emerging APIs like . The company's small development team in had built Presto from the ground up in C++, achieving strong standards compliance and performance, but sustaining it against the pace of web platform changes proved increasingly burdensome. Following Google's announcement on April 3, 2013, that it was forking to create the independent Blink engine for , confirmed it would align with this change, contributing to Blink's development to ensure compatibility and shared progress. The transition enabled to leverage a mature, community-driven codebase, reducing the need for proprietary investments in core rendering technologies while maintaining focus on distinctive browser features. The rollout began with a beta of 15 in May 2013, culminating in the stable release on July 2, 2013, marking the debut of a Blink-powered desktop browser for Windows and macOS. Presto's integration with the browser's had been deeply coupled, necessitating a complete rewrite of the UI layer to adopt a more modular compatible with Blink. This change eliminated some Presto-specific capabilities, such as tightly woven custom UI elements and extensions, but enhanced ecosystem integration by aligning with the dominant Chromium/Blink platform used by Chrome, improving cross-browser consistency and accelerating standards support. Presto lingered in specialized products like , where it continues to handle server-side page compression and rendering for low-bandwidth users in Extreme mode and on feature phones as of .

Source Code Incident

In February 2016, the source code for Presto version 12.15 was uploaded to a repository by an unknown party, marking the first public appearance of the proprietary engine's codebase. Opera Software confirmed the code's authenticity in a January 18, 2017, security blog post, noting it represented an outdated snapshot from the engine's final development phase, unused since the 2013 transition to Blink. Opera responded swiftly by issuing a Digital Millennium Copyright Act (DMCA) takedown notice to , received on January 12, 2017, which resulted in the repository's removal on January 13. Despite this, mirrors of the code proliferated to other platforms, including on January 14, 2017, and various file-sharing sites, evading further immediate takedowns. The leak exposed significant portions of Presto's implementation, potentially revealing unpatched vulnerabilities from its active era, though the engine's obsolescence limited direct risks to modern systems. It also highlighted tensions between Opera's commitment to maintaining the code as and broader advocacy for open-sourcing defunct browser engines to support historical and alternative development.

Cultural and Historical Impact

The naming conventions for Presto and its associated components drew inspiration from ancient and traditional writing systems, reflecting Opera Software's thematic approach to engine nomenclature. Presto itself, introduced in as the rendering engine, succeeded earlier iterations, while the JavaScript engines evolved through names like and —referencing the undeciphered Minoan scripts from —Futhark, honoring the runic alphabet used by Germanic tribes, and Carakan, derived from the . This pattern underscored a cultural nod to historical scripts, emphasizing the engines' foundational role in interpreting web languages. Presto's historical significance lies in its contributions to user interface innovations and web standards advocacy, shaping browser evolution during an era of diverse rendering engines. Opera, powered by Presto, pioneered features such as —a visual thumbnail-based shortcut to frequently visited sites introduced in Opera 9.5 in 2007—which influenced similar start page designs in subsequent browsers like Chrome's New Tab page. Similarly, Opera's early implementation of customizable site-specific search engines, via editable configuration files allowing direct queries to services like or Amazon, predated broader adoption and enhanced efficient web navigation. Through Opera's active participation in the (W3C), including co-editing CSS specifications and joining the initiative in 2012, Presto helped advocate for interoperable standards, promoting compliance with , CSS, and that benefited the broader ecosystem. Following Presto's discontinuation in , its legacy persists through archival efforts, unofficial derivatives, and sustained impact in mobile accessibility. As of 2024, Presto remains in use within for server-side rendering in specific modes and devices, extending its legacy in mobile data compression. The 2017 leak of Presto's from Opera 12.15 sparked interest among developers, leading to unofficial forks and mirrors on platforms like and , preserved for historical study despite legal actions by Software. These artifacts highlight Presto's enduring appeal for researchers examining pre-Chromium browser architectures. Additionally, via —which relied on Presto for server-side rendering—Presto enabled affordable access in developing regions; by compressing data up to 90%, it connected millions in and , saving users billions in costs and bridging the where bandwidth was scarce. Presto's underappreciated influence extended to advancing execution and rendering techniques before the dominance of Chromium-based engines. The Carakan JavaScript engine, integrated with Presto in 2010, introduced a register-based that improved performance by approximately 2.5 times compared to the previous Futhark engine in SunSpider benchmarks, with native compilation offering up to 5 to 50 times the performance. Presto's dynamic rendering capabilities, including efficient handling of complex DOM manipulations, supported early web applications and standards like , fostering innovations in interactive web experiences during a time of engine diversity. This foundational work, often overshadowed by WebKit's rise, underscored Presto's role in pushing the boundaries of client-side scripting and layout efficiency.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.