Miranda is Professor David Turner's pure, non-strict, polymorphic, higher order functional programming language, which was the main inspiration for Haskell. This repository is for its maintenance as Professor Turner died last year and I have the blessing of his family and of the University of Kent at Canterbury Computing Laboratory where he developed it. It is unlikely to have any bugs but has been updated to compile on modern systems.
  • C 51.9%
  • Roff 21.2%
  • MATLAB 9.6%
  • Shell 6.4%
  • M 5.8%
  • Other 5.1%
Find a file
2025-12-17 13:06:41 -06:00
issues Add the issue-pulling scripts 2025-06-02 19:20:48 +02:00
miralib Add ex/bignum.m 2025-06-02 19:21:27 +02:00
.date Update to mira-2066-src 2025-03-14 18:08:41 +01:00
.epoch Update to mira-2066-src 2025-03-14 18:08:41 +01:00
.gitignore Redo PDF manual is groff -ms and drop html versions 2025-05-23 19:03:55 +02:00
.nextxversion Import mira-2057-src 2025-03-14 14:21:53 +01:00
.version Import mira-2057-src 2025-03-14 14:21:53 +01:00
.xversion Update to mira-2066-src 2025-03-14 18:08:41 +01:00
allexterns Fix type mismatch of `version' 2025-04-09 00:19:08 +02:00
big.c Turn hd[x] into hd(x) and #define hd(x) to hd[x], similarly for tl[] 2025-05-27 16:57:29 +02:00
big.h Turn hd[x] into hd(x) and #define hd(x) to hd[x], similarly for tl[] 2025-05-27 16:57:29 +02:00
ChangeLog Release 2.067-rc2 2025-05-31 12:46:12 +02:00
cmbnms.c Update to mira-2064-src 2025-03-14 18:08:23 +01:00
combs.h Update to mira-2064-src 2025-03-14 18:08:23 +01:00
COPYING Import mira-2057-src 2025-03-14 14:21:53 +01:00
data.c Clean up the new signal handler signals() to avoid compiler warnings 2025-06-11 17:40:00 +02:00
data.h Make file-local vars and fns static; comment out unused fns 2025-05-27 19:52:49 +02:00
ex Import mira-2057-src 2025-03-14 14:21:53 +01:00
fdate.c Make main() return(0) 2025-04-08 23:13:47 +02:00
gencdecs Update to mira-2064-src 2025-03-14 18:08:23 +01:00
just.1 Import mira-2057-src 2025-03-14 14:21:53 +01:00
just.c Update to mira-2064-src 2025-03-14 18:08:23 +01:00
lex.c Add command-line editing and history using linenoise 2025-12-17 12:59:07 -06:00
lex.h Update to mira-2064-src 2025-03-14 18:08:23 +01:00
linkmenudriver Import mira-2057-src 2025-03-14 14:21:53 +01:00
Makefile Add leaks target for checking memory leaks 2025-12-17 13:06:41 -06:00
makehtml.sh Add manual.md derived from online manual making manual.html 2025-05-21 07:14:52 +02:00
menudriver.c Implement signal() with BSD semantics using sigaction() 2025-05-27 17:04:13 +02:00
mira.1 Update default heap/dic sizes and larger cell size on 64-bit systems 2025-04-03 16:00:49 +02:00
mira.man.ms More fixes to the manual's typography 2025-05-25 04:02:11 +02:00
quotehostinfo Add commentary 2025-04-22 22:02:15 +02:00
README Update to mira-2064-src 2025-03-14 18:08:23 +01:00
README.md Point to "Compilers" table in the cfarm issue for optimization availability 2025-05-12 17:48:48 +02:00
reduce.c Make file-local vars and fns static; comment out unused fns 2025-05-27 19:52:49 +02:00
revdate Import mira-2057-src 2025-03-14 14:21:53 +01:00
rules.y Rename DOLLAR2 to DOLLARS to force update of y.tab.h 2025-05-27 17:04:15 +02:00
signals.c Clean up the new signal handler signals() to avoid compiler warnings 2025-06-11 17:40:00 +02:00
signals.h Clean up the new signal handler signals() to avoid compiler warnings 2025-06-11 17:40:00 +02:00
steer.c Add command-line editing and history using linenoise 2025-12-17 12:59:07 -06:00
toks.m Update to mira-2064-src 2025-03-14 18:08:23 +01:00
trans.c Make file-local vars and fns static; comment out unused fns 2025-05-27 19:52:49 +02:00
types.c Make file-local vars and fns static; comment out unused fns 2025-05-27 19:52:49 +02:00
utf8.c Fix almost all gcc and clang -Wall warnings 2025-04-07 11:23:04 +02:00
utf8.h Update to mira-2064-src 2025-03-14 18:08:23 +01:00
version.c Import mira-2057-src 2025-03-14 14:21:53 +01:00
y.tab.c Rename DOLLAR2 to DOLLARS to force update of y.tab.h 2025-05-27 17:04:15 +02:00
y.tab.h Rename DOLLAR2 to DOLLARS to force update of y.tab.h 2025-05-27 17:04:15 +02:00

Maintenance of Miranda

The Miranda source code is now maintained on codeberg.org/DATurner/miranda

This is particularly relevant because the last binary release on miranda.org.uk was of mira 2.042 in Sep 2008 and since then Professor Turner only released it in source code form, of which his latest is 2.066 from Jan 2020, but those releases do not compile out of the box.

To build it from source, you need make and a C compiler. If you need to modify rules.y you'll also need byacc; it does not work at all with the supposedly compatible GNU bison.

It is known to work on aarch, amd, arm, chrp, evbarm, loongarch, mips, powerpc, riscv and x86, on 32-bit and 64-bit, big-endian and little-endian systems running AIX, AlmaLinux, AlpineLinux, Archlinux, CentOS, Debian, FreeBSD, Haiku, MacOS X, NetBSD, OpenBSD, OpenSUSE and Rocky with all versions of GCC from 2.95 to 14 and clang 11 to 16 with no optimization enabled and some versions of gcc and clang up to -O3. The 64-bit version has been tested with up to 2TB of RAM for the heap, over 100,000,000,000 cells.

You can see whether optimization will work for you in the table "Compilers" in DATurner/miranda#25

It compiles but does not work on Solaris with a sun4u processor and a Windows port has not yet been attempted.

A release will be made on Codeberg when further portability and testing are complete, currently scheduled for 1st May 2025.

In the meantime, you can

git clone https://codeberg.org/DATurner/miranda
cd miranda
make
make install

which puts it in /usr/bin/mira and /usr/lib/miralib. To install it elsewhere or use a different compiler than GCC, edit Makefile before building.

You can also test it in the source directory before installing it by running it as ./mira

There is a mailing list miranda@groups.io whose web site is http://groups.io/g/miranda and you can also subscribe to it by sending an email to miranda+subscribe@groups.io

His earlier language, KRC, is maintained at codeberg.org/DATurner/KRC

Martin Guy <martinwguy@gmail.com>, April 2025.