Skip to main content


  1. I am currently working on porting the Boehm-Demers-Weiser conservative Garbage Collector (bdwgc) to Capability enhanced architectures (CHERI). The current work concentrates on ports for the RISC-V architecture. However, the main target implementation for this software is intended to be ARM'sAARCH-64 based Morello architecture.

  2. (Automatic Loop Parallelisation in Python for Novel Architectures) parallelises affine loop structures in Python and generates variants of code execution for GPGPU commpuation. Dependences are derived at dynamically at runtime. The dynamic resolution allows the compiler to exploit potential parallelism aggresively compared to a static compiler.A static compiler makes conservative assumptions to safely execute code without violating dependences, while ALPyNA can resolve exact dependences using the CPython VM's introspection capabilities.

  3. is a small C++ program meant to do K-Means clustering. It can read and populate data within a text file and do K-Means clustering on it using standard C++. It provides an execution class to do all the operations meant for K-Means clustering. On an ARM based device with NEON support, it will greedily use the NEON vector instructions if the memory alignment of the data allows it, but falls back onto standard CPU execution if the memory alignment is not favourable.

  4. is a small C library meant to parse dense uniform data in 1,2 or 3-dimensions, using any set of single character delimiters. The size of the dimensions are dynamically extracted from the file and written into memory based on the provided delimiters and the user specified native data-type of the data. To enable the developer to use array notation, all the second and third-order pointer indirections are filled in so that (for example) the developer can access the array using array[i][j][k] notation instead of using pointer arithmetic in a dynamically allocated multi-dimensional space.

  5. I am a contributor to the Network Protocol Tool (npt). It parses IETF RFC documents and automatically generates protocol parsers from them. The tool is aimed at improving the reliability and security of the Internet by improving the engineering processes involved in protocol development. The Network Protocol Tool was developed under the Improving Protocol Standards for a more Trustworthy Internet project (EPSRC EP/R04144X/1).