Skip to content

Instantly share code, notes, and snippets.

View Lokathor's full-sized avatar
🌴
Workin' on Rust Stuff

Lokathor Lokathor

🌴
Workin' on Rust Stuff
View GitHub Profile
@pizlonator
pizlonator / pizlossafull.md
Last active October 23, 2026 12:41
How I implement SSA form

This document explains how I would implement an SSA-based compiler if I was writing one today.

This document is intentionally opinionated. It just tells you how I would do it. This document is intended for anyone who has read about SSA and understands the concept, but is confused about how exactly to put it into practice. If you're that person, then I'm here to show you a way to do it that works well for me. If you're looking for a review of other ways to do it, I recommend this post.

My approach works well when implementing the compiler in any language that easily permits cyclic mutable data structures. I know from experience that it'll work great in C++, C#, or Java. The memory management of this approach is simple (and I'll explain it), so you won't have to stress about use after frees.

I like my approach because it leads to an ergonomic API by minimizing the amount of special cases you have to worry about. Most of the compiler is analyses and transformations ov

@wareya
wareya / text.glsl
Last active April 29, 2025 13:12
GLSL code for rendering numbers without using any textures or hardcoded arrays
// GLSL code for rendering numbers without using any textures or global arrays, using a tiny bitmap font
// for debugging!
// public domain. use under the creative commons zero license (any version)
// warning: the float-to-decimal conversion logic is "incorrect" and can only give around around four or five decimal places of floating point decision
// warning: the integer part of the printed floats is limited to the size of a signed 24-bit integer
// GLSL code for rendering numbers without using any textures or global arrays, using a tiny bitmap font
// for debugging!
// public domain. use under the creative commons zero license (any version)
@zesterer
zesterer / nested_spans.rs
Created June 27, 2023 23:57
Chumsky's nested.rs example, but with spans included
use chumsky::{prelude::*, input::SpannedInput};
// This token is a tree: it contains within it a sub-tree of tokens
#[derive(PartialEq, Debug)]
enum Token {
Num(i64),
Add,
Mul,
Parens(Vec<(Token, SimpleSpan)>),
}
@tmspzz
tmspzz / install-haskell-stack-arm.sh
Last active April 28, 2019 07:00
A scrip to install Haskell Stack and set up things properly on Raspbian
#!/bin/sh
# Update: As of March 24th 2017 this script won't work.
# The script at https://get.haskellstack.org/ is broken
# because the binary of Stack 1.4 for ARM is missing from https://www.stackage.org/stack/ .
# You can still get the binary for Stack 1.3.2 from
# https://github.com/commercialhaskell/stack/releases/download/v1.3.2/stack-1.3.2-linux-arm.tar.gz
# and place it at $USR_LOCAL_BIN/stack in your system.
# Once Stack is installed you can proceed with the Install LLVM step
@qzchenwl
qzchenwl / OAuth2.hs
Created April 10, 2012 12:34
Simple oauth2.0 implementation in Haskell
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
import Data.Aeson
import qualified Data.ByteString.Char8 as BS
import qualified Data.ByteString.Lazy.Char8 as BSL
import Data.ByteString.Lazy (toChunks)
import Data.List
import Data.Maybe
import Data.Typeable (Typeable)
@mbbx6spp
mbbx6spp / ExitCodeTestsExample.hs
Created November 6, 2011 20:30
Cabal file with test-suite block and explanation in a USAGE.md file.
module Main where
import Test.QuickCheck (quickCheck)
import Your.Module (encrypt, decrypt)
prop_reverseReverse :: [Char] -> Bool
prop_reverseReverse s = (reverse . reverse) s == s
prop_encryptDecrypt :: [Char] -> Bool
prop_encryptDecrypt s = (encrypt . decrypt) s == s