Yazarın 15 yıllık açık kaynak projesi Bob, Python ve C++ dillerinde Scheme programlama dilinin çeşitli uygulamalarını içeren bir süittir. Başlangıçta bir yorumlayıcı, derleyici ve sanal makine (VM) ile başlayan Bob, daha sonra C++ ile kendi çöp toplayıcısına (GC) sahip bir VM ekleyerek düşük seviyeli dil uygulamaları hakkında deneyim kazanma amacı gütmüştür. Uzun bir sessizlik döneminden sonra, yazar projeye geri dönerek Bob'a yeni bir derleyici eklemeye karar verdi: Scheme'den doğrudan WebAssembly'ye (WASM) derleme yapabilen bir araç.
Bu yeni geliştirmenin iki temel amacı vardı. Birincisi, Scheme gibi yerleşik veri yapıları, leksik kapatmalar (lexical closures) ve çöp toplama gibi özelliklere sahip gerçek, yüksek seviyeli bir dili WebAssembly'ye dönüştürme sürecini deneyimlemekti. Bu, basit "oyuncak" dillerin derlenmesinden çok daha karmaşık bir meydan okuma sunuyordu. İkincisi ise, WASM GC uzantısı ile pratik deneyim kazanmaktı. Yazar, bu uzantıyı gerçek bir projede kullanarak derinlemesine bilgi edinmek istiyordu.
Proje tamamlandı ve Bob artık Scheme ifadelerini doğrudan WebAssembly metnine dönüştürebilen bir WasmCompiler sınıfına sahip. Bu metin daha sonra standart WASM araçları kullanılarak ikiliye derlenip çalıştırılabiliyor. Projenin en ilgi çekici yönlerinden biri, Scheme nesnelerini WASM GC kullanarak temsil etmek oldu. Değerler doğru şekilde kutulandığında (boxed/wrapped), temel WASM yürütme ortamı bellek yönetimini üstleniyor. Örneğin, Scheme'deki PAIR (cons hücresi), BOOL (boolean) ve SYMBOL (sembol) gibi anahtar nesneler, WASM'ın struct ve ref null eq gibi tipleriyle temsil ediliyor. Özellikle i31 tipi, sayısal değerleri kutulamadan (boxing) referans olarak temsil etme imkanı sunarak verimlilik sağlıyor.
Scheme gibi yüksek seviyeli bir dilin WebAssembly'ye derlenmesi, web platformunda daha karmaşık uygulamaların çalıştırılmasına olanak tanıyor ve WASM GC'nin pratik kullanımını gösteriyor.