Current Status


Rearranged the Tutorials and added some new ones.

Vertices which operate upon streams of data, rather than individual data items, have been added. These are based on those in Macros but with a few additional ones, e.g. one which integrates its inputs, allowing code to be drawn in a way similar to programming an analogue computer, allowing differential equations to be simply numerically solved.

Real number types now can contain units, which are kept track of in the editor by the type system, and incur no run-time cost. For example, if you multiply a mass by an acceleration, you get a force, which is output in newtons. If you try to add them, the editor won't let you. This strengthens the type system, preventing a class of bugs. It also reduces the number of vertices the programmer has to choose from during program development.


A debugger has been added which stops at each vertex of the function being debugged before executing it, and allows the user to inspect the values of its inputs.

I am currently working on a compiler for Full Metal Jacket. I have found a way of compiling to Emblem (i.e. Lisp) source code (which can then be compiled by Emblem's compiler into virtual machine code). This technique is new to me, and only works for (visual) dataflow.

Minor corrections to a few tutorials have been made. These show the debugger checkbox and compiler button.


Recent additions to Full Metal Jacket include:

  1. addition of graphical type definition;
  2. addition of inline and substitution macros;
  3. an inspector for input queues;
  4. multi-input/output when+ and unless+ for conditionals;
  5. multi-input/output start+ and repeat+ for iteration;
  6. constants
  7. improved type inference.

I have updated the existing pages, and will be adding new pages soon.


Full Metal Jacket is now close to being a complete language. All it lacks is the ability to extend data structures from within the language, i.e. by selecting and connnecting the appropriate vertices. At present, extending data structures can be done within Emblem, the Lisp dialect used for implementation, but that isn't satisfactory. I do know roughly what to do here, and rough mock-ups are shown on page 21 of the ELS2015 slides. However, there's a lot of work involved: the object system somehow must be modified or replaced to accommodate this, which has repercussions throughout all Emblem code, not just the code that implements Full Metal Jacket.

There's a fair bit of technical debt which has to be paid off, too: bugs to fix, things not working the way I want them to and would make the programmer's life easier if they were done differently.

A compiler needs to be written. At present, Full Metal Jacket runs on an interpreter, which is written in a byte-code interpreted language.

After that is done, and I'm happy with it, I'll consider making the .303 release.


© Copyright Donald Fisk 2015, 2016