JIT compilers, games, audio, and soft-real-time applications frequently need both high performance foreign-code interoperation and relief from garbage collection pauses.
Note to readers: This document is an early draft of a model for memory-safe references that I've been working on for the last ~2 years. While I think it is quite promising, the design is unfinished. The "regions" that I present in this document have not been given a formal semantics, and I have not explained where they originate from. My goal is merely to convince you that the design is promising, and that if seen to completion, it would advance the frontier of zero-cost memory safety.
Update March 2025: I am working on a newer version of this proposal, that aims to simplify the model substantially. When I have finished that proposal, I will put a link here.
Update August 2025: Verdagon has written an awesome blog post that explains this proposal at a high level. I recommend you check it out!
In this document, I present a novel model for memory-safe references that aims to significantly improve upon the Rust-inspired model that Mojo c
| // ============================================================================= | |
| // XNU kperf/kpc demo | |
| // Available for 64-bit Intel/Apple Silicon, macOS/iOS, with root privileges | |
| // | |
| // | |
| // Demo 1 (profile a function in current thread): | |
| // 1. Open directory '/usr/share/kpep/', find your CPU PMC database. | |
| // M1 (Pro/Max/Ultra): /usr/share/kpep/a14.plist | |
| // M2 (Pro/Max): /usr/share/kpep/a15.plist | |
| // M3: /usr/share/kpep/as1.plist |
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| # patch-claude-code.sh — Rebalance Claude Code prompts to fix corner-cutting behavior | |
| # | |
| # What this does: | |
| # Patches the npm-installed @anthropic-ai/claude-code cli.js to rebalance | |
| # system prompt instructions that cause the model to cut corners, simplify | |
| # excessively, and defer complicated work. | |
| # |
| package main | |
| import ( | |
| "sync" | |
| "sync/atomic" | |
| "testing" | |
| "testing/synctest" | |
| "time" | |
| "fmt" |
| This is an attempt to show that Raft's safety is | |
| preserved with single-server membership changes as | |
| described in the dissertation plus the patch that a | |
| leader may not append a new configuration entry to | |
| its log until it's committed an entry from its | |
| current term. | |
| This extends the safety argument in the | |
| paper/dissertation. The only part that's different | |
| (as far as I can tell) for membership changes is Step |
Normally, it is sufficient to grab the Go MSI installer from the website in order to set up the toolchain. However, some packages that provide Go wrappers for C libraries rely on cgo tool, which in turn, needs the GCC toolchain in order to build the glue code. Also, 3rd-party dependencies are usually hosted on services like GitHub, thus Git is also needed. This mini-guide illustrates how to setup a convenient development environment on Windows using MSYS2.
| (env3) jaten@Jasons-MBP ~/go/src/github.com/cosmos72/gomacro (generate) $ go version | |
| go version | |
| go version go1.12beta2 darwin/amd64 | |
| (env3) jaten@Jasons-MBP ~/go/src/github.com/cosmos72/gomacro (generate) $ time go install -a -toolexec=time -x | |
| time go install -a -toolexec=time -x | |
| WORK=/var/folders/2x/hm9gp5ys3k9gmm5f_vzm_6wc0000gn/T/go-build619075523 | |
| mkdir -p $WORK/b004/ | |
| mkdir -p $WORK/b010/ | |
| cat >$WORK/b004/importcfg << 'EOF' # internal | |
| # import config |
| void * | |
| luaL_pushcdata(struct lua_State *L, uint32_t ctypeid, uint32_t size) | |
| { | |
| /* | |
| * ctypeid is actually has CTypeID type. | |
| * CTypeId is defined somewhere inside luajit's internal headers | |
| * which should not be included in init.h header. | |
| */ | |
| static_assert(sizeof(ctypeid) == sizeof(CTypeID), |
| --[[ | |
| ProFi v1.3, by Luke Perkin 2012. MIT Licence http://www.opensource.org/licenses/mit-license.php. | |
| Example: | |
| ProFi = require 'ProFi' | |
| ProFi:start() | |
| some_function() | |
| another_function() | |
| coroutine.resume( some_coroutine ) | |
| ProFi:stop() |