Skip to content
Tiny Embeddable Programming Language
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


--- Info -----------------------------------------------------------------------
What      : Trot(TM) Programming Language
Version   : 0.2.01-wip
Author    : Jeremiah Martell
Copyright : (C) 2010-2014
License   : 3-clause BSD
Website   :

--- Summary --------------------------------------------------------------------
Trot is a small embeddable programming language that gives you control over the
virtual programs that it runs. You can control their memory usage, virtual cpu
usage, and garbage collection.

This is my personal "weekend project", so progress will be slow but steady.

It will be usable at version 0.4. (see PLAN)

--- Details --------------------------------------------------------------------
- Small
  Current sizes of the library are:
  - make small, ~32 KB
  - make fast,  ~38 KB

- Easily embeddable
  It will be easy to embed Trot into your application, say a C program, and have
  easy Trot and C interactions.

- Garbage Collection
  It can handle anything: Self references, mutual references, etc.
  Future work will improve it to be incremental and dynamically tunable.

- Fast
  To be determined.

- Actor Model
  Uses the actor model for easy concurrent programming.
  The actors communicate by pushing messages to each other, so there's no need
  to worry about mutexes and such.

- Simple
  - Only 2 types: lists and ints.
    Lists are by reference, so you can create any data structure: heirarchies,
    maps, graphs, etc.
    Ints are signed 32-bit integers, so they can also be used for unicode
  - Code is stack based.

--- Quality --------------------------------------------------------------------
- Compiled with gcc's -Wall -Werror and -Wextra.
  Compiles with 0 warnings.
- Many unit tests guarantee everything works correctly.
- gcov and lcov is used to make sure we get as much coverage as possible.
  Current coverage is 100% branch coverage.
- Valgrind is used to look for memory leaks and memory corruption.
  There are 0 memory leaks or errors reported.
- Compiles cleanly against C89, C99, and C11 standards.
- All code is documented with doxygen comments.
- All functions are reentrant.
- Contains no third-party code, written entirely by Jeremiah.

--- Building -------------------------------------------------------------------
Just run "make".

  fast     - build fast version
  small    - build small version
  debug    - build fast version, with smaller TROT_MAX_CHILDREN
  debug2   - build debug version, with smaller TROT_MAX_CHILDREN
  debug3   - build debug version, with smaller TROT_MAX_CHILDREN,
             TROT_ENABLE_LOGGING, and PARANOID checks.
  single   - build a combined trotSingle.c file
  profile  - build for profiling
  test     - run tests
  vtest    - run tests in valgrind
  coverage - generate coverage report with gcov and lcov
  clean    - clean up files

Trot has no dependencies other than standard C libraries. If you have trouble
building Trot with the included Makefile, you can manually build Trot with
something like this:

cd source/trotLib
gcc -c *.c
ar rcs libTrot.a *.o

The other directories can be built just as easily.

--- END ------------------------------------------------------------------------
You can’t perform that action at this time.