Skip to content

Instantly share code, notes, and snippets.

@Tetralux
Tetralux / julia-saveimage.sh
Last active February 24, 2017 22:59
A simple script to safely back-up the Julia sys.dll and libjulia.dll, and give it a name.
#!/bin/bash
# Moves the sys.dll and libjulia.dll files into sys.$NAME.dll and libjulia.$NAME.dll in their respective directories.
# (See julia-loadimage.sh.)
# If the files already exists, prompts before overwriting.
#
# Usage: ./julia-saveimage.sh <name>
ABORT=0
LIB=usr/lib/julia
@Tetralux
Tetralux / julia-loadimage.sh
Last active February 24, 2017 22:58
A simple script to safely load a back-up of the Julia sys.dll and libjulia.dll.
#!/bin/bash
# Moves libjulia.$NAME.dll and sys.$NAME.dll back into place. (See julia-saveimage.sh.)
# If the files already exist, prompts before overwriting.
#
# Usage: ./julia-loadimage.sh <name>
LIB=usr/lib/julia
BIN=usr/bin
ABORT=0
@Tetralux
Tetralux / odin.bat
Last active June 11, 2023 15:56
A helper for compiling code with Odin on Windows
@ECHO OFF
:: Path to Odin executable
SET ODINPATH="C:\odin\odin.exe"
:: Path to the Microsoft 'vcvarsall.bat' file.
:: This sets the required environment vars and makes cl.exe and link.exe available in PATH.
SET VCVARSPATH="C:\Program Files (x86)\Microsoft Visual Studio\VC\Auxiliary\Build\vcvarsall.bat"
:: Only run the MSVC batch file the first time we
@Tetralux
Tetralux / base64.odin
Last active August 3, 2019 15:52
Quick and dirty base64 implemention in Odin
/*
A simple base64 encoder/decoder.
Written by Tetralux@github.
Created December 2018.
*/
package base64;
using import "core:fmt";
@Tetralux
Tetralux / vcvarsall.bat
Created January 11, 2022 03:01
A simpler wrapper for vcvarsall.bat which only does the work on the first run
@echo off
:: Path to vcvarsall.bat from Visual Studio
:: When called, it makes cl.exe (C++ compiler) and link.exe (Linker) available in PATH.
set VCVARSPATH="C:\Program Files (x86)\Microsoft Visual Studio\VC\Auxiliary\Build\vcvarsall.bat"
if "%VSISSET%"=="" (
%VCVARSPATH% %*
if "%ERRORLEVEL%"=="0" (
set VSISSET=%*
@Tetralux
Tetralux / popen_test.odin
Last active September 29, 2022 06:32
Example of how to bind and use popen from libc
package process
import "core:c"
import "core:c/libc"
import "core:strings"
when ODIN_OS == .Windows {
foreign import libc_obj "system:libucrt.lib"
POPEN_NAME :: "_popen"
PCLOSE_NAME :: "_pclose"
@Tetralux
Tetralux / tiny.zig
Last active March 11, 2023 10:37
A simple example of a calculator programming language that compiles to native code!
//
// A simple example of a calculator programming language, that compiles to native code!
//
// Written by Tetralux <[email protected]>, 2023-03-09.
//
// Programs are a string that you pass as an argument in the form of a mathmetical expression.
// e.g: '10 + 4 - 1 + 7'.
// This program will generate some Zig code that computes the answer, and prints it to stdout.
// It then will invoke the Zig compiler as a subprocess to compile and run this program.
//
@Tetralux
Tetralux / counting_allocator.odin
Last active March 26, 2023 10:36
Back of the envolope counting allocator implementation
import "core:mem"
import "core:runtime"
Counting_Allocator :: struct {
total_used: uint,
backing_ally: mem.Allocator,
}
counting_allocator :: proc(ca: ^Counting_Allocator) -> mem.Allocator {
return {
@Tetralux
Tetralux / simple_exec.zig
Last active October 13, 2023 18:13
A simple example program that runs a program with the given arguments by searching the PATH environment variable.
//
// A simple example program that runs a program with the given arguments by searching the PATH environment variable.
//
// Tetralux, 2023-10-13.
//
const std = @import("std");
const builtin = @import("builtin");
const string = []const u8;
@Tetralux
Tetralux / ini.zig
Last active October 21, 2023 02:03
Rudimentary INI parser in Zig
const std = @import("std");
const string = []const u8;
const Allocator = std.mem.Allocator;
/// Given an entire INI string, parses it into a map of key-value pairs.
/// The pairs are all freed by a call to `Parser.deinit`, and retrieved via `Parser.get`.
/// If you need them to live beyond that, use `some_other_allocator.dupe(u8, value)`.
pub const Parser = struct {
data: std.StringArrayHashMap(string),