Cleaning up the parser (MPC -> LLVM for the Neil Language #2)

In my previous post Hooking up MPC & LLVM I had started hooking up MPC to LLVM, to start developing a custom language I’m calling Neil - Not Exactly an Intermediate Language. Since then, I’ve tried to rationalise the various hacks I had to do on the original version just to get something working, and actually try and have a clean codebase for generating LLVM from our MPC grammar. Check out the GitHub repository here if you want to follow the progress.

Hooking up MPC & LLVM

I’ve been tinkering around with mpc and llvm recently - just to satisfy a few simple questions: How easy is it to use mpc? How easy is the LLVM c api to use? How easy is it to connect a parser generator to an LLVM Module? So given the above aims, I’ve embarked on creating my own stupid little language, that I’m calling ‘neil‘ - Not Exactly an Intermediate Language. It is utterly by chance that the name ‘neil‘ happens to be my own name, if you’ve believe that gratuitous lie!

A simple Vulkan Compute example

With all the buzz surrounding Vulkan and its ability to make graphics more shiny/pretty/fast, there is one key thing seems to have been lost in the ether of information - Vulkan isn’t just a graphics API, it supports compute too! Quoting the specification (bold added for effect): Vulkan is an API (Application Programming Interface) for graphics and compute hardware And: This specification defines four types of functionality that queues may support: graphics, compute, transfer, and sparse memory management.

Allocators in json.h!

While at GDC I got a feature request from the awesome folks over at Blastbay Studios requesting that they could feed an allocator to json.h, my JSON parsing library. This has long been on my TODO list, so I took the opportunity of a plane ride back from San Francisco to the Isle of Skye to remedy the situation! The latest master version of json.h changes the signature of json_parse_ex to include two new fields:

git pre-commit clang-format hook

Most of my company projects have a requirement that we run clang-format on all commits to keep a consistent style. Unfortunately, I’m as forgetful as the fabled goldfish (which actually isn’t that forgetful it turns out) so I often forget to run clang-format. After the umpteenth time of forgetting and suffering some quite deepseated rage from my colleagues, I decided to investigate a way to automate the process. It turns out git has a really cool feature introduced in 1.