Meta-programmazione di binding OCaml per GTK3

Nicoletti, Alberto (2020) Meta-programmazione di binding OCaml per GTK3. [Laurea magistrale], Università di Bologna, Corso di Studio in Informatica [LM-DM270]
Documenti full-text disponibili:
[img] Documento PDF (Thesis)
Disponibile con Licenza: Creative Commons: Attribuzione - Condividi allo stesso modo 3.0 (CC BY-SA 3.0)

Download (454kB)

Abstract

GTK è una delle principali librerie per costruire interfacce grafiche, ed essendo scritta in C sono molti i linguaggi che realizzano dei binding a questa libreria. GTK dispone di un sistema di introspezione in grado di generare un file XML che descrive l'intera API della libreria. Tramite questo meccanismo, per numerosi linguaggi sono state realizzate delle librerie in grado di leggere questo file XML e generare automaticamente i binding per GTK. Nel caso di OCaml invece esiste la libreria lablgtk, la quale è però scritta a mano: questo permette di avere una API più vicina ai costrutti idiomatici del linguaggio, ma incompleta, sensibile ai cambi di versione e prona ad errori. L'obiettivo raggiunto in questa tesi è la realizzazione di un prototipo funzionante in grado di generare automaticamente i binding di GTK per OCaml. Il prototipo è stato ottenuto modificando haskell-gi, la libreria analoga per Haskell, un linguaggio simile ad OCaml che ha dovuto affrontare problematiche simili. In particolare questa libreria è composta di due moduli principali, uno per la lettura del file XML, ed uno per la generazione del codice Haskell a partire dalle informazioni ottenute dal parsing. In ocaml-gi-gtk, la libreria creata in questa tesi, è stato riusato completamente il modulo di parsing, ma è stato riscritto il modulo di generazione del codice per generare codice OCaml invece che Haskell.

Abstract
Tipologia del documento
Tesi di laurea (Laurea magistrale)
Autore della tesi
Nicoletti, Alberto
Relatore della tesi
Scuola
Corso di studio
Indirizzo
CURRICULUM A: TECNICHE DEL SOFTWARE
Ordinamento Cds
DM270
Parole chiave
GTK,OCaml,Haskell,binding,C,Generazione,lablgtk,GIR,ocaml-gi-gtk,haskell-gi,GObject
Data di discussione della Tesi
19 Marzo 2020
URI

Altri metadati

Statistica sui download

Gestione del documento: Visualizza il documento

^