What is NOWUT?
NOWUT is the name of a programming language that was created in 2018, and it also refers to the self-hosted compiler which implements the language. The compiler is offered under the terms of the GPL. It currently targets 16- and 32-bit x86 CPUs, 68000, and SH2. A separate linker (LINKBIN) is included to handle several output formats, while Win32 programs can be built using the third party GoLink.
The earliest, pre-release version of the compiler was written in FreeBASIC. It took about 40 hours to translate the FB code into NOWUT, reimplement necessary console and file I/O functions, and squash bugs until it could build a matching copy of itself. The resulting executable was also 10 times quicker and one third the size.
The goal of NOWUT is to be easier than pure assembly language but without unnecessary abstractions. It keeps the straightforward aspects of assembly:
At the same time, it removes certain burdens:
The compiler design aims more for simplicity than for omniscience. It won't find your bugs or optimize your code. The inline assembler allows for manual optimization of speed-critical routines.
What's on the roadmap for future NOWUT versions?
Features being considered:
What NOWUT code exists so far?
The compiler archive includes these examples:
Several other programs written in NOWUT have been released separately:
Visit the Anachro-mputing Blog for other software, hardware, and NOWUT-related posts.
Visit the Go Tools website for the Go Linker which works with NOWUT.