Focus: A simple and fast text editor written in Jai

This page summarizes the projects mentioned and recommended in the original post on

Our great sponsors
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Onboard AI - Learn any GitHub repo in 59 seconds
  • SaaSHub - Software Alternatives and Reviews
  • focus

    A simple and fast text editor

  • Vale

    Compiler for the Vale programming language - (by ValeLang)

    One language that's still missing is a simple C-like language that offers Rust-style memory safety but without copying C++ and high level type system wankery.

    There are also many more areas stil to explore when it comes to memory safety that are less extreme than Rust's approach (I completely forgot about Vale which tries out some really interesting things in that direction:

  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • JaiPrimer

    A description of Jonathan Blow's programming language, Jai

    Thanks, and yes, I didn't think about closures.

    Talking about closures, I also don't know why Jai needs explicit capture lists. In C++ and Rust I understand the need for them, because you have various ways to pass them into the lambda, but Jai doesn't seem to care, at least in the examples at

  • entt

    Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more This is a very small experiment i did to learn the metaprogramming features. its an ECS library using the same model as entt ( In 200 lines or so it does the equivalent of a few thousand lines of template heavy Cpp while compiling instantly and generating good debug code.

    Some walkthrough:

    Line 8 declares a SparseSet type as a fairly typical template. its just a struct with arrays of type T inside. Next lines implement getters/setters for this data structure

    Line 46 Base_Registry things get interesting. This is a struct that holds a bunch of SparseSet of different types, and providers getters/setters for them by type. It uses code generation to do this. The initial #insert at the start of the class injects codegen that creates structure members from the type list the struct gets on its declaration. Note also how type-lists are a native structure in the lang, no need for variadics.

    Line 99 i decide to do variadic style tail templates anyway for fun. I implement a function that takes a typelist and returns the tail, and the struct is created through recursion as one would do in cpp. Getters and setters for the View struct are also implemented through recursion

    Line 143 has the for expansion. This is how you overload the for loop functionality to create custom iterators.

    The rest of the code is just some basic test code that runs the thing.

  • Jai-Community-Library

    Tutorials and Cheatsheet for Jai, written by its community

    Either ask very politely for years, or be in denial like half the Jai community that writes Jai but is never able to compile it.

    Yes, there is a whole Jai community wiki made from half cobbled together knowledge (, and a super secret discord made for the super elite, non-compiler-having plebs are banned.

  • zig

    General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

    They seem to be specifically referring to the compiler error (as in, prevents compilation) for unused local variables. See discussion here:

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts