Overview of files in Io's reorganised distribution
Io's build system and file layout have been changed.
Here are some notes I made while exploring the changes.
Key changes
Files at the top level
Files in the Io tarball or darcs repo are part of Io's
- source;
- build system;
- darcs repo; or
- other files that you might find handy when using Io.
Source
Three folders hold the code for the Io interpreter and the addons.
- libs
- libiovm, the core of Io, and the libs it depends on: basekit, coroutine, garbagecollector, and skipdb
- tools
- main.c files and scripts for building executables without addons
- addons
-
typically wrappers for C libraries.
Typical examples are: ZLib, OpenGL, Sockets and embedded Python
Building the vm and addons
Io's build system is split into two parts.
The Makefiles build an Io interpreter without addons.
The interpreter then builds the addons using the build.io script.
- Makefile
- Makefile.lib
- build
- Io's build system for addons and executables using addons
- build.io
- script for kicking off the building of the addons and executables using them
- _build
- build output
Darcs's files
- _darcs
-
darcs repo.
Not in the tarball
- boring
-
ignore list for darcs
Other things in the distribution
- docs
- html and pdf versions of the Io guide
- readme.txt
- README file
- projects
-
a hodgepodge of handy stuff.
Contains syntax highlighting for editors
- samples
- simple (old) examples of Io. Some may still work
- tests
- a few old tests which should no longer be here
libs folder: IoVM and libraries it depends on
- iovm
-
The heart of Io.
libiovm contains the interpreter, parser and primitive objects.
IoVM is Io.
- basekit
-
Utilities that are used to implement Io.
Utilities include lists, stack, byte array, perfect hashes, sorting, random number generator, command line argument parser, dates and durations and portable versions of common Unix functions. Will be released as a standalone library.
- garbagecollector
-
Incremental garbage collector. Implemented using the tri-colour, Baker treadmill, write-barrier algorithm.
Available as a standalone library.
- coroutine
-
Simple stack switching coroutine implementation. Uses ucontext and windows fibers when available.
Available as a standalone library.
- skipdb
-
A BerkeleyDB style database.
Uses skip lists instead of b-trees.
Available as a standalone library.
tools folder: main.c for libiovm
Executables for Io.