Header Ads

Writing code that writes code — with Facebook Hack Codegen

HACK is the Facebook's own programming language designed to build complex web sites and other software quickly and without many flaws.

Hack Codegen is a library for generating Hack code and writing it into signed files that prevent undesired modifications. Being able to generate code through automated code generation allows programmers to increase the level of abstraction by making frameworks that are declarative and that are translated into high-quality Hack code. We've been using Hack Codegen at Facebook for a while. After seeing so much internal success, we open-sourced this library so that more people could take advantage of it.

Open-sourcing Hack Codegen, which automatically generates hack code, Facebook's software engineer Alejandro Marcu said in a blog post




Before Hack Codegen, Facebook engineers used concatenating strings to generate code that perform simple yet frequently executed tasks, like fetching birthday of a user.

However, the social media giant later discovered that the technique was not good enough to scale up and realized that it need a good library to generate code. This results in the birth of Hack Codegen.
Code That Writes Code

Hack Codegen simplifies code generation by helping developers create a schema, which holds code for multiple times usage, and a way to generate all the related functionality required to support that code.
The library only needs a developer to provide the required details about the particular implementation, although rest of the task is done by the software, such as generation of classes, variables, methods, functions, interfaces, files, and other standard blocks of code.

The Hack Codegen library includes:
  • Hack_builder to deal with the concatenation
  • New lines
  • Indentation
  • Braces
  • Hack keywords
  • Collections
  • Signed files to re-generate code automatically when a schema is changed

The open-source version of Hack Codegen is available on GitHub.




No comments

blogmytuts. Powered by Blogger.