High-Performance Software Development

I'm an independent software engineer writing open-source software and providing services related to software development. I'm focusing on writing and designing high performance code in C++ that can take advantage of CPU specific optimizations, multithreading, and JIT compilation. I'm focused on increasing the performance and reducing the memory footprint of existing software and writing new optimized software from scratch. I have started several open-source projects in this area that are successful and that should demonstrate my deep understanding of hardware and how to write highly-optimized software for it.

Services

Please check out the Services page if you are interested in services that I offer as an independent software engineer. I'm available for both short-term and long-term contracts that involve consultations, writing new code, and improving the existing one. I'm also preparing workshops to help companies with training people to write better code in terms of runtime performance, so please contact me if you are interested in these kinds of services. B2B contract is possible.

Open Source

I'm an open-source enthusiast and founder of the following open-source projects, which I have developed in my spare time:

AsmJit

AsmJit is a lightweight library suitable for low-latency machine code generation written in C++. It can generate machine code for X86, X86_64, and AArch64 architectures. It has a type-safe API that allows C++ compiler to do semantic checks at compile-time even before the assembled code is generated or executed. It also provides an optional register allocator that makes it easy to start generating machine code without a significant development effort.

AsmJit has been used extensively in research and both open-source and commercial projects.

AsmJit in Research

AsmJit in Open Source

  • Blend2D - A high performance 2D vector graphics engine written in C++ (git)
  • Cinder - Instagram's performance oriented Python fork that uses AsmJit in its JIT backend
  • CULT - A tool that can be used to measure instruction latencies in user-space
  • Erlang OTP - Erlang OTP uses AsmJit in its BEAM JIT compiler (git, blog)
  • FBGEMM - Facebook's matrix multiplication library
  • GZDoom - Doom engine, which uses AsmJit for JIT compilation of ZScript code (git)
  • MathPresso - Mathematical expression parser and JIT compiler (example of using AsmJit)
  • QuestDB - Fast SQL for time series (git, blog)
  • X64dbg - An open-source x64/x32 debugger for Windows (git)
  • (this is not a complete list, there are many other projects using AsmJit)

AsmJit in Commercial Software

  • (to be added in the future)

Blend2D

Blend2D is a high performance 2D vector graphics engine written in C++ and released under the Zlib license. The engine utilizes a built-in JIT compiler to generate optimized pipelines at runtime and is capable of using multiple threads to boost the performance beyond the possibilities of single-threaded rendering. Additionally, the engine features a new rasterizer that has been written from scratch. It delivers superior performance while quality is comparable to rasterizers used by AGG and FreeType. The performance has been optimized by using an innovative approach to index data that is built during rasterization and scanned during composition. The rasterizer is robust and excels in rendering complex vector art and text.

Blend2D in Commercial Software

  • FL Studio - FL Studio developed by ImageLine started using Blend2D in 2024 to accelerate rendering of 2D vector graphics and its user interface

Other Projects

The following projects are smaller projects I have developed to either showcase the use of AsmJit or to solve some problems I was having at some point in time:

  • AsmTK - Assembler toolkit based on AsmJit. A sister project that provides more functionality usually not required by JIT compilers. It provides assembler parser compatible with Intel syntax. AsmTK focuses more on non-JIT use cases and its future goal is to provide a foundation for creating libraries and executables
  • Build Actions - A tool designed to simplify running builds on continuous integration (CI) servers designed to minimize the dependency on vendor specific features. Things on CI change frequently so I wanted a shared place where I would fix things instead of maintaining this per project. There is a blog post about build-actions that describes how the tool is used with GitHub Actions
  • CULT - a tool that runs series of tests to estimate how many cycles an X86 processor (either in 32-bit or 64-bit mode) takes to execute each supported instruction. The tool output is designed to be processed by additional tools
  • MathPresso - A C++ library designed to parse mathematical expressions and compile them into machine code. It's much faster than traditional AST or byte-code based evaluators, because there is basically no overhead in the expression's execution. The JIT compiler is based on asmjit and works on X86 and X64 architectures

Commercial Software

I have worked on the following projects (which got open-sourced at some point) as part of my professional career. Commercial projects that are not open-source are not listed here as there is no way to verify my contribution to them publicly.

Sneller

Sneller is a SQL query engine written in Golang designed for querying unstructured data with SQL expressions. The execution engine (called VM in the source code) is written completely in x86_64 assembly with the use of AVX-512 extensions to make it possible to process gigabytes of data per second per core. The engine works with JSON, but JSON is converted to Amazon ION binary format and then compressed by Iguana, which is a new compression algorithm that was designed to take advantage of SIMD instructions (AVX2 and AVX-512) and was also developed by Sneller. The query engine supports advanced features such as joins, advanced filtering, regular expressions, math operations, and vector search.

Connect