retrocat is a collection of POSIX compliant cat
implementations written in a variety of pre-C languages (and C itself). None of the retrocat
implementations are written for utility in mind. Instead they are created
to be a side-by-side showcase of many old and influential languages.
Languages with a (WIP) have an incomplete implementation or are planned to be implemented later. Languages with a * are implemented with an updated post-C version of the language.
- K&R C*
- FORTRAN*
- Pascal*
- ALGOL 60 (WIP)
- Simula (WIP)
- COBOL (WIP)
- LISP (WIP)
Once you clone the directory you can either build every cat with the root makefile or cd into a single language
and build that binary. With the root makefile it will generate every binary and copy it to the build/
directory.
Each language's Makefile has the option USE_LANGNAME which prepends the language's name to the executable. To enable this you can add "USE_LANGNAME=1" to the make command.
This is set true automatically in the root makefile meaning the binaries generated and copied to build are named
ccat
, fortrancat
, etc.
Of course, to build each language requires a compiler for the language. So here are the build dependencies and the language that needs it.
- make (N/A)
- gcc (C)
- gfortran (FORTRAN)
- fpc (Pascal)