The Glorious Glasgow Haskell Compilation Systemghc --version, GHC, är en kompilator för det funktionella programmeringsspråket Haskell. Huvudutvecklare för GHC är Simon Peyton-Jones och Simon Marlow som båda arbetar på Microsoft Research i Cambridge, England. GHC är fri mjukvara och finns tillgängligt till flera olika processortyper och operativsystem Platforms - GHC Trac
Implementation GHC är skriven i Haskell, men dess runtime-system är skrivet i C och C--. lexikalanalys, parser och typechecker, är designade för att behålla så mycket information om koden som möjligt, för att ge klarare felmeddelanden. Efter typcheckning kompileras koden till GHC Core, som ett mellanliggande språk. GHC Core (eller bara Core) är baserat på System F med vissa utökningar.
Därefter sker förenklingar av koden, och även majoriteten av optimeringarna GHC utförs som omskrivningar av Core-koden. Dessa omskrivningar inkluderar strikthetsanalys, applicering av användarspecificerade rewrite-regler, inlining, specialisering av funktioner, samt enklare omskrivningar som short-cut-fusion och betareduktion.
Den resulterande Core-koden kompileras sedan till en intern variant av C-- som sedan antingen skrivs till C-kod för kompilering via GCC, eller kompileras direkt till maskinkod, eller konverteras till LLVM-kod för kompilering via LLVM. Med alla tre metoderna länkas den kompilerade koden till GHC:s runtime-system för att producera en exekverbar fil.
Språk GHC implementerar hela språkstandarden Haskell 2010 med flera tillägg. GHC har bra support för parallellism genom bland annat transaktionellt minne.
Tillägg Möjlighet till strikt evaluering av värden, matchningar och fält. Template Haskell (TH), ett system för metaprogrammering. Med TH typcheckas och utvärderas Haskell-uttryck vid kompilering, och kan manipuleras och/eller användas av det program som kompileras. Implicit parallellism, genom annoteringar. Detta innebär att parallella beräkningar kan ske på flera kärnor samtidigt utan att programmeraren skapat nya trådar. Utökningar av typsystemet genom bland annat GADTs, typfamiljer och existentiella typer.
Referenser Noter
Källor
Externa länkar Officiell webbplats
Kategori:Kompilatorer Kategori:Funktionella programspråk