Facebook heeft een programmeertaal vrijgegeven die zowel dynamische als statische typering ondersteunt. De taal, met de naam Hack, is grotendeels compatibel met php en maakt het mogelijk om statisch getypeerde code te draaien zonder dat die hoeft te worden gecompileerd.
De programmeertaal wordt al voor het overgrote deel van Facebook gebruikt, maar wordt nu pas aan de wereld getoond. De ontwikkelaars van de programmeertaal hebben hem vrijgegeven als opensource. Hack werkt in combinatie met HipHop, een combinatie van een just-in-time-compiler en een virtuele machine die eerder al door Facebook onder een opensource-licentie werd vrijgegeven.
Wat de programmeertaal bijzonder maakt, is dat hij zowel dynamische als statische typeringen ondersteunt. Talen met dynamische typeringen zoals php en Ruby maken het makkelijker om code te schrijven, terwijl talen met statische typeringen zoals Java stabielere, overzichtelijkere code opleveren. Hack ondersteunt beide naast elkaar, waardoor nieuwe features bijvoorbeeld eerst dynamisch kunnen worden gebouwd en later van statische typeringen kunnen worden voorzien.
Hack leunt voor een zeer groot deel op php: de meeste php-bestanden kunnen zelfs zonder wijzigingen als Hack-scripts worden gedraaid. Wel worden sommige uitgefaseerde php-functies niet ondersteund, evenals sommige functies die incompatibel met statische typeringen bleken. Bijzonder is dat Hack het mogelijk maakt om code met statische typeringen te draaien zonder dat het nodig is om de code te compilen.
Facebook heeft ook tools vrijgegeven om code met dynamische typeringen om te vormen naar statisch getypeerde code. Het sociale netwerk heeft die tools gebruikt om zijn code grotendeels naar Hack om te zetten. Facebook draaide sinds zijn oprichting op php.
<?hh class MyClass { public function alpha(): int { return 1; } public function beta(): string { return 'hi test'; } } function f(MyClass $my_inst): string { // Fix me! return $my_inst->alpha(); }
Voorbeeld van code in Facebook Hack