Skip to content

GeekHorse/Trot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

--- 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
    characters.
  - 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".

targets:
  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 ------------------------------------------------------------------------

About

Tiny Embeddable Programming Language

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages