Releases: davidgiven/cowgol
0.6.1: the 'Professionalism? We've heard of it' release
What's new in 0.6:
-
much better Z80 code --- I did a major microoptimisation pass and knocked off an easy 7%. It now looks almost passable in places. (But the overall package size is bigger because there's an extra debugging tool.)
-
out-of-the-box support for Fuzix systems. You can use Cowgol to develop on real Z80 systems running the Fuzix miniature Unix operating system! If you're patient, and like rapidly mutating APIs. It'll run in 32kB, but that's not enough RAM to load the standard libraries. 48kB or better userspace is required.
-
CP/M distribution packages. Precompiled binaries for your favourite antique operating system! Requires at least 40kB TPA to do anything useful.
What's new in 0.6.1:
-
fix a ghastly 6502 codegen bug which wasn't picked up in my tests that was causing the compiled compiler to generate completely broken code. (I'm amazed it didn't crash. It was scribbling all over random memory.) It's a good thing nobody actually uses this stuff, isn't it?
-
some minor changes where Cowgol autodetects memory rather better, which means it's much less important to tune it for the available RAM. Nobody should notice any difference.
0.6: the 'Here's Two Pence, Go Buy Yourself A Real Operating System' relase
0.6!
What's new here:
-
much better Z80 code --- I did a major microoptimisation pass and knocked off an easy 7%. It now looks almost passable in places. (But the overall package size is bigger because there's an extra debugging tool.)
-
out-of-the-box support for Fuzix systems. You can use Cowgol to develop on real Z80 systems running the Fuzix miniature Unix operating system! If you're patient, and like rapidly mutating APIs. You need a system which supports a 48kB userland (so no TRS80-4P or ZX Spectrum).
-
CP/M distribution packages. Precompiled binaries for your favourite antique operating system! Requires a 50kB TPA.
0.5: the 'Industry Standard' release
Good news, everyone --- we support CP/M, now! FInally, a mainstream platform...
The big headline feature is the new Z80 code generator. This is good enough to run the compiler on a CP/M system and generate small binaries, but it needs a massive optimisation pass and the code quality is grim. There's a CP/M emulator supplied with Cowgol which is used for compiler tests but it's also set up to let you play directly with the compiler. Instructions are in the README.
There are 6502 changes too: I found a number of terrifying bugs in the 6502 code generator while working on the Z80 one, so those are fixed too. (Sadly, this means that the Standard Benchmark now takes 7m8s, up 12s from the previous release.)
0.4: the 'Faster, Better, Shorter, Smaller' release
0.4! It's almost looking like something maybe useful, if you squint hard enough!
This version has the 6502 code generator massively overhauled. It's smarter, smaller, and produces drastically better code --- on average, we've lost over a tenth of the code size of the BBC Micro native compiler. Plus, it runs a lot faster. 0.3 would complete the Standard Benchmark in 7m54s; it now takes 6m38s. That's not due to being smarter; it's pure code generator better code. And because it's better code, memory usage and code size is actually down.
In fact, it's so much smaller and simpler, that we're actually a gnat's whisker away from self-hosting on the BBC Micro. Nearly everything fits!
0.3: the 'Short Attention Span' release
...and what this one has going for it is that it's much, much faster. Like, the Standard Benchmark (compiling a one-line 'hello world' program) now takes 7m54s rather than 16m7s. This has mostly been achieved by cheating, so instead of working smarter, we just use user-space disk buffers and a rewritten I/O layer. Yes, it turns out that the previous version was spending almost exactly half of the compilation runtime waiting for the MOS to do system calls.
(Turns out that the MOS built-in file system buffering is really, really slow.)
I can actually shave another 40s off by using a combination of the new FCB system and traditional MOS channels, but I want to migrate to FCBs anyway because CP/M will need it. The old file API has gone.
Memory usage and binary size is up, of course, but it's totally worth it.
0.2: the 'How did it ever work' release
In this release, a whole bunch of refactoring and bugfixes. The tokeniser has been rewritten from scratch to be much faster and reliable (using Flex tables); then I threw away all that speed improvement by splitting the typechecker into two passes, the typechecker and the backendifier. Many, many showstopping bugs have been fixed which should have meant the compiler never worked.
It'll run the Standard Benchmark in 16m7s, where the previous version ran it in 16m50s.
Precompiled binaries
0.1.1: the "Embarrassed Cough" release
Naturally, I found a bug almost immediately in the 0.1 release. This is fixed. There's also even some documentation.
What you get:
- a terrible, buggy bootstrap compiler
- ...which will build a terrible, buggy cross-compiler for Linux
- ...which will build a terrible, buggy native compiler for a BBC Micro with Tube
- ...which will compile small programs very slowly.
It's full of bugs, and it's slow and huge. Enjoy!
Here is a bootable floppy disk image which you can use to try it yourself. See http://cowlark.com/cowgol for the documentation.
Precompiled binaries
v0.1: the "It lives! It lives, I tell you!" release
This is the very first public release of Cowgol.
What you get:
- a terrible, buggy bootstrap compiler
- ...which will build a terrible, buggy cross-compiler for Linux
- ...which will build a terrible, buggy native compiler for a BBC Micro with Tube
- ...which will compile small programs very slowly.
It's almost undocumented, and it's full of bugs, and it's slow and huge. Enjoy!
Here is a bootable floppy disk image which you can use to try it yourself.
Precompiled binaries
Very first demo version (very broken)
Timestamp tag. This is the first version with an actual runnable demo. It's broken in many ways, and very very slow (disturbingly slow). Here's an autobootable SSD to prove it which you can run on jsbeeb.