1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-01 17:35:54 +00:00
Bruce Mitchener b7e9529322 Begin to modernize optimized dispatch. (#271)
This feature was controlled by the compilation flag `OPDISP`
which would enable some bits of assembler on the x86 (ISC or DOS)
or some other specialized code on SPARC. On SPARC hardware, there
was a special compilation process that would preprocess the code
and generate dispatch tables.

We do this now when this feature is enabled using gcc's computed
gotos feature. This is available in clang and some other compilers.
Notably, it isn't present in Visual Studio.

This doesn't decrease our portability at all as this feature is
optional and it replaces specialized assembler code with C using
compiler extensions (making it cross-platform).

In doing this, we've removed a bunch of related code, however,
it is likely that other pieces yet remain and will be removed
in subsequent commits as we clean things up and refine them.

This feature remains disabled by default for now.
2021-01-22 12:28:16 -08:00
2020-12-29 11:00:24 -08:00

Maiko

Maiko is the implementation of the Medley Interlisp virtual machine, for a byte-coded Lisp instruction set and some low-level functions for connecting with Lisp for access to display (via X11) and disk etc.

Newcomers should check out the Medley Interlisp Introduction.

See the Medley repository for

Bug reports, feature requests, fixes and improvements, support for additional platforms and hardware are all welcome.

## Development Platforms

We are developing on FreeBSD, Linux, MacOS, and Solaris currently on arm7l, arm64, PowerPC, SPARC, i386, and x86_64 hardware.

Building Maiko

Building requires clang, make, X11 client libraries (libx11-dev). For example,

$ sudo apt update
$ sudo apt install clang make x11dev
$ cd maiko/bin
$ ./makeright x
  • The build will (attempt to) detect the OS-type and cpu-type. It will build binaries lde and ldex in ../ostype.cputype (with .o files in ..ostype.cputype-x. For example, Linux on a 64-bit x86 will use linux.x86_64, while MacOS 11 on (new) Mac will use darwin.arm64.
  • If you prefer using gcc over clang, you will need to edit the makefile fragment for your configuration (makefile-ostype.cputype-x1) and comment out the line (with a #) that defines CCforclangand uncomment the line (delete the #) for the line that definesCCforgcc`.
  • There is a cmake configuration (TBD)

Building For MacOS

  • Running on MacOS requires an X server, and building on a Mac requires X client libraries. An X-server for x86 MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/ For the new arm64 MacOS 11, you'll need https://x.org which you can get via MacPorts or Brew.

Building for Windows 10

Windows 10 currently requires "Docker for Desktop" or WSL2 -- basically a Linux virtual machine -- and and a (Windows X-server). See Medley's README for more.

Languages
C 95.6%
Assembly 3.4%
CMake 0.5%
Shell 0.3%
sed 0.2%