Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


A postfix, stack-based, functional programming (, probably slow) language

Subscribe to updates I use Towel

Statistics on Towel

Number of watchers on Github 5
Number of open issues 0
Main language OCaml
Average time to merge a PR less than a minute
Open pull requests 0+
Closed pull requests 1+
Last commit almost 5 years ago
Repo Created about 5 years ago
Repo Last Updated over 3 years ago
Size 609 KB
Organization / Authorqwert42
Latest Releasev0.1
Page Updated
Do you use Towel? Leave a review!
View Towel activity
View TODOs for Towel (1)
View on github
Book a Mock Interview With Me (Silicon Valley Engineering Leader, 100s of interviews conducted)
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating Towel for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

The Towel Programming Language

Towel is a typed stack-based postfix-syntaxed general-purposed functional language. A Towel compiler weave that compiles source code in Towel to Towel assembly language (Tasm) which runs on the Towel virtual machine written in OCaml. More robust design and implementation will be scheduled. A Tasm to C compiler is also scheduled.


Some work need to be done before you build this project, otherwise though the project still builds, it won't compile or execute any thing:

  • Modify src/compiler/config.ml and alter the directory to your install destination or this directory
  • Do the same for src/vm/config.ml

We threw away the old Make building system and changed to Waf. Run

waf configure build

to build for Towel compiler executable towel for now.

If you want some documentations, e.g. manuals, run

waf configure build --docs

If you want to build native executable instead of the one of OCaml bytecodes, run

waf configure build --native

To build Towel virtual machine, Run

wal configure build --tvm

After building, run compile_std.sh to compile the standard library.

You are all set!

One thing to note, before you run ./waf test, do mkdir -p tests/temp to create a directory for prefect to place compiled test files.

Don't panic!

See weave -h or the manual.


  • Implement some key standard libraries. Priority 4.

  • Implement type checking algorithm! Priority 5.

  • The module system needs to be detailed designed. Priority 2.5. This is done by now. Parts missing: libpath mechanism, and maybe something else.

  • A script that generates std.w and std.e. Module Std generally covers all the assembly instructions that aren't covered in asm. Priority 2. This is also done by now. Parts missing: IDK.

The Future

Of course the TOWEL-C COMPILER like the cool guys!!! (And of course not javascript, it just sucks.)

See also the related part in the report.


This project is licensed under BSD 3-Clause License.

Towel questions on Stackoverflow (View All Questions)
  • Hot Towel Angular-Breeze course - getting breezeProvider errors
  • CSS automatically loaded during running of hot towel angular js SPA application with bootstrap. Couldn't find how?
  • Visual Studio 2015 Hot Towel Angular
  • encountering errors setting up hot towel generator
  • Hot Towel AngularJs Subroute
  • hot towel angular 1.2, playing with the menu
  • Hot Towel gulp build
  • Setting up global variable in SPA (Hot Towel)
  • Adding a user authentication login page to Hot Towel SPA
  • Getting Metadata Query Failed error breeze/Breeze/Metadata on Azure Server Hot Towel Angular
  • How to Install Hot towel SPA on Visual 2013, I cannot see the template in the web section
  • Buttons not clickable in Hot Towel Template UI
  • Distinguish the parameter passed as a query string in hot towel template that uses durandal
  • Call Function on View Loaded (Activate) in Hot Towel/Durandal Single Page App
  • How to use google universal analytics in Hot Towel durandal SPA + typescript
  • Hot Towel - Dynamic Dom element data bindings
  • Failed knockout data-bind on database driven page using Hot Towel API
  • Dropzone control with Hot Towel Template (Knockout and Durandal)
  • Hot Towel, Durandal SPA, Breeze Angular templates for VBNet?
  • SPA Hot Towel: Multiple Database Context
  • How to put Adsense in the hot towel SPA?
  • Hot Towel - Does Durandal need to be patched to use Q instead of jQuery promises?
  • awake hot towel angular 1.2
  • Single Page Application (Hot Towel): Loop through view data using jquery
  • Single Page Application (Hot Towel)
  • Adding JQuery Calendar in MVC 4.0 John Papa hot towel
  • Using return $q.when in Hot Towel Angular datacontext
  • Hot Towel Angular data-ng-show not working during validation
  • how can i optimize and bundling js files easiy of hot towel installed in asp.net mvc solution?
  • Constructing a Hot Towel Breeze API
Towel list of languages used
Other projects in OCaml
Powered by Autocode - Instant Webhooks, Scripts and APIs
Autocode logo wordmark