# Presto (Software)

Presto ist eine proprietäre HTML-Rendering-Engine, die von 2003 bis 2013 eigens für den Browser Opera entwickelt wurde und dort von Version 7 bis Version 12.18 verwendet wird. Presto wird außerdem für die mobilen Browser Opera Mini und Opera Mobile verwendet. Mit dem Release von Opera 15 wurde die Entwicklung der Engine für die Desktop-Variante eingestellt, lediglich in Opera Mini findet sie serverseitig noch immer Anwendung.

## Vorteile

Sie unterscheidet sich von ihrem Vorgänger vor allem im Hinblick auf ihre dynamische Arbeitsweise: Aufgerufene Seiten oder deren Teile können mittels Document Object Model events jederzeit neu gerendert werden.
Presto unterstützt zudem das Document Object Model (DOM) des W3C vollständig.
Des Weiteren interpretiert Presto sogenanntes Street HTML (abwertend sinngemäß: „Gassen-Quelltext“). Damit bezeichnete der Hersteller nicht standardkonforme, für den damals noch sehr weit verbreiteten Internet Explorer optimierte, Webseiten.

## Presto-basierende Anwendungen
### Webbrowser

* Opera
** Opera 7 bis 12
** Opera Mobile 9.5 bis 12
** Opera Mini (mittels eines Vermittlungsservers, der die Websites in ihrer Größe komprimiert, wird dort Presto weiterhin am Leben gehalten)
* Nintendo
** Nintendo DS Browser (basierend auf Opera)
** Nintendo DSi Browser (basierend auf Opera)
** Wii Internet Channel Browser (basierend auf Opera)
* Nokia 770 Browser (basierend auf Opera)
* Sony Mylo COM-1's Browser (basierend auf Opera)

### HTML-Editoren

* Macromedia Dreamweaver MX bis Dreamweaver CS3 (CS4/CS5 verwenden bereits WebKit)
* Adobe Creative Suite 2 und 3
* Virtual Mechanics SiteSpinner Pro

## Versionen

| Presto Version | ECMAScript-Version | Codename | Opera Browser | Opera Mobile | Anderweitige Verwendung | Neue Features |
| pre Presto | none | unnamed | 3.5 | | | |
| pre Presto | Linear A | Elektra | 4.0 | | | |
| 1.0 | Linear B | unnamed | 7.0 | | | Eine völlig neue Rendering Engine, erstmals auch Favicon Unterstützung |
| 1.0 | Linear B | | 8.5 | | | "Bolton" version: Erste kostenlose Opera-Version ohne Werbebanner |
| 2.0 | Linear B | Merlin | 9.0 | | Internet Channel | Canvas, ACID2-Test bestanden, Rich text editing, XSLT und XPath |
| 2.1 | Futhark | Kestrel | 9.5 | 9.5 | Nintendo DSi Browser | SVG Tiny 1.2, SVG via CSS, SVG via img., Audio objects |
| 2.1.1 | Futhark | Kestrel | 9.6 | | | Scope API, SVG als Favicon |
| 2.2 | Futhark | Peregrine | | 9.7 | | |
| 2.2.15 | Futhark | Peregrine | 10.0 10.1 | 9.8 | | Acid3 test: 100/100, pixel-perfect, Web fonts, CSS Selectors API, RGBA & HSLA Transparenz, TLS 1.2., FPS in SVG, SVG Schriftarten in HTML |
| 2.3 | Futhark | Peregrine | | | Opera Devices SDK 10 | Neue CSS3 Features: border-image, border-radius (abgerundete Ecken), box-shadow, transitions; HTML5: Support für audio- und video-Tags |
| 2.4 | Futhark | Peregrine | | 10 | | CSS2.1: visibility:collapse; CSS3 : transforms; HTML5: <canvas> shadows, Web Database, Web Storage, window.btoa, sowie window.atob |
| 2.5.24 | Carakan | Evenes | 10.5 | 10.1 | Opera Mini server | CSS3: mehrere Hintergründe; HTML5: <canvas> Text |
| 2.6.30 | Carakan | Evenes | 10.6 | | | WebM; HTML5: AppCache, Geolocation, Web Workers |
| 2.7.62 | Carakan | Kjevik | 11.0 | 11.0 | | Extensions, WebSocket |
| 2.8.131 | Carakan | Barracuda | 11.1 | 11.1 | Opera Mini server 4.27 | WebP, File API, CSS3 Verläufe (aber nur für background und background-image): -o-linear-gradient, -o-repeating-linear-gradient; Unterstützung für <color-stop>. |
| 2.9.168 | Carakan | Swordfish | 11.5 | | | Verlaufsverwaltung, classList (DOMTokenList) |
| 2.9.201 | Carakan | | | 11.50 für Android | | ECMAScript "strict mode" |
| 2.10.229 | Carakan | Tunny | 11.6 | 11.6 | | HTML5-Parser, Voller Support für CSS-Verläufe, Typed Arrays, CSS unit "rem" |
| 2.10.254 | Carakan | Wahoo | | 12.0 | | WebGL sowie Hardwarebeschleunigung |
| 2.10.289 | Carakan | Wahoo | 12.0 | | | WebGL sowie Hardwarebeschleunigung |
| 2.11.355 | Carakan | Marlin | | 12.1 für Android | | SPDY, CSS3 Flexbox |
| 2.12.388 | Carakan | Marlin | 12.10 bis 12.18 | | | SPDY, CSS3 Flexbox |

## Ende

Ab Version 15 (seit Juli 2013 verfügbar) benutzt Opera Software die HTML-Rendering-Engine Blink. Als Grund wurde damals angegeben, dass die Presto-Engine zu unübersichtlich und der Aufwand, gegen eine quelloffene und von mehreren Softwareschmieden unterstützte Lösung anzukommen, schlicht zu groß wurde.
Im Januar 2017 wurde der Quellcode der Engine entwendet und von Unbekannten veröffentlicht.