Programming Languages

The tower of babel is your type system as a macro

shell

c

c++

  • https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
  • gcc < 11 can be built with c++98; c++11 required for 11+
  • static_assert compile time checks UB and leaks
  • RTTI can be used for runtime reflection
  • c++11
    • constexpr, uniqueptr, move semantics, memory model
  • c++14
    • reader writer locks
  • c++17
    • parallell stl, std filesystem
  • c++20
    • modules, concepts(templates constraints), ranges, coroutines
  • c++23
    • generators, import std;, std::expected

rust

css

jvm

  • Valhalla for value objects (remove boxing overhead)
  • Loom for user mode green threads
  • panama for native library linkage

javascript

typescript

  • compiles to javascript
  • any type for escape
  • deno run npm package with deno run --allow-all npm:SomeSuchCommand or a ts file with import express from "npm:express@^4.20"
    • package.json scripts can be run with deno task
    • based on v8
  • bun run npm package
    • bun profile builds are debug and baseline exclude avx2
    • based on webkits javascriptcore

DSL

GOAL

  • jak 1-3 lisp game implementation

WASM

  • sexp text format
  • stack based vm instructions
  • function table
  • interoperability
    • js with SharedArrayBuffer
    • WASI for host

asm

x86

  • calling convention of setting registers and jumping
  • SIMD (xmmx) SSE/AVX(512)

zig

lisp

scheme

  • guile
  • prescheme
    • manual memory management
    • static type system
    • verified prescheme to C compiler
    • operating system 3L compiler/vm written in prescheme
    • guile-prescheme interop
  • gnu mes
    • scheme interpreter in C and C compiler in scheme used for bootstrapping guile/guix with gash
  • chicken scheme
    • scheme to C compiler

elisp

  • eieio for objects