Gosub Engine è un progetto open source particolarmente ambizioso, e per molti versi ancora in fase embrionale, che mira a creare un nuovo motore per browser Web in grado di interpretare HTML5 e CSS3. Gestendo quindi correttamente la complessità degli ipertesti.
Il progetto è stato pensato per essere modulare e flessibile e il suo codice sorgente è disponibile su GitHub, permettendo la collaborazione dei contributor.
Le funzionalità del Gosub Engine
Tra le caratteristiche più interessanti troviamo la presenza di tokenizzatore per HTML5 e CSS3. Si aggiungono poi un parser DOM (Document Object Model) e un motore di rendering che può trasformare i documenti in una loro rappresentazione visiva.
Uno degli aspetti centrali del Gosub Engine è la capacità di interpretare e gestire documenti complessi. Ciò avviene anche attraverso un approccio strutturato che utilizza un albero dei documenti (tramite il DOM) e fogli di stile CSS3 per definire la formattazione.
Il motore di rendering del progetto è stato concepito per essere adattabile. Con lo scopo di gestire non solo la presentazione del contenuto Web ma anche di supportare l'esecuzione di codice JavaScript. Ciò significa che l'engine non si limita a visualizzare documenti statici, è anche in grado di interagire dinamicamente con i contenuti tramite script.
Il tokenizzatore
Un componente fondamentale del progetto è il tokenizzatore che analizza i file HTML e CSS e li suddivide in unità più piccole chiamate, appunto, token.
Questi ultimi vengono poi elaborati dal parser per costruire la struttura logica del documento. Il DOM funge da rappresentazione interna del documento, consentendo al motore di manipolare e visualizzare le informazioni in modo più efficiente. In parallelo, i fogli di stile CSS vengono interpretati per determinare l'aspetto visivo degli elementi presenti nel documento.
Sebbene il Gosub Engine sia ancora nelle fasi iniziali di sviluppo, esso rappresenta un interessante progetto per chi desidera contribuire alla creazione di un browser engine alternativo e in grado di supportare gli standard Web più recenti.