We are a startup developing a new programming language and AI system that help developers create better and more secure software by automating away tedious code fixes.

The language is:

  1. To be easy to read, write, and use.

    Even the simplest transformations created with the best of tools now take tens to hundreds of lines of code. The intent is obfuscated by AST manipulation details and language idiosyncrasies. We aim to make the transformation concise, easy to understand at a glance, and easy to write or edit.

  2. To empower non-expert developers.

    Creating automatic program transformations (e.g., linters, refactorings, etc.) now requires very specialized knowledge, so very few developers do it. We aim to abstract away all unnecessary complexity and overly technical aspects. Developers with no parsers or compilers experience should be able to use our language.

  3. To make it easy for AI and verifiers to reason about it.

    Keeping the language concise and simple allows verifiers and AI systems to easily reason about it. E.g., we have early success in automatically learning non-trivial transformations from just 2-4 code examples.

Example

Here is how we express a simple transformation of require to import:

everywhere { `var $name = require($source)` => `import $name from $source` }

For comparison, here is how Lebab, a well-built traditional tool, does the same thing. Lebab is pretty cool, but our implementation is more than 10 times smaller :-)

Contact

If you would like to play with our language, email us at [email protected].

2019

JS Program Transformation Survey Results, Part I