About Borg

Borg is a mobile multi agent platform which consist of 2 major parts. One part is the core engine (the borgcore), which interpretes agents. The second part are the different user interfaces offered for various platforms. (windows, kde, text interfacing, web interfacing) and others. Borg has the following major advantages:

- Location Transparant Routing Mechanism
- Strong mobility
- Build in synchronisation primitives
- A computational model suitable for wide area networks
- Garbage Collection
- Transparant Serialisation of almost every possible expression
- ... and much more ...

Borg itself is started from an existing virtual machine called Pico (written by Theo D'Hondt) which features open semantics. Pico is accessible via an extremely simple language yet its expressiveness is very high, comparable to e.g. Scheme. Pico semantics are defined by a set of nine evaluation functions that are supported by a storage model and a computational model. The storage model features full storage management and reclamation; the computational model is based on a pushdown automaton that manages expressions and continuations on a double stack. Continuations, inspired by continuation passing style, are thunks that are sequenced in order to support computation. Pico requires less than twenty continuations to implement the complete semantics of the language.


People marked with a * are still working on Borg.

- Theo D'Hondt ( tjdhondt@vub.ac.be)
- Wrote the initial virtual machine, pico. Head of the Programming Technology Lab.
- Werner Van Belle ( werner.van.belle@vub.ac.be)
- Distribution. Is currently looking at wide area network components.
- Karsten Verelst ( kaverels@vub.ac.be | kaverels@vub.ac.be)
- Synchronisation, is currently looking at the reflective nature of the virtual machine.
- Jessie Dedecker ( jededeck@vub.ac.be | jededeck@vub.ac.be)
- Higher level language constructs to support peer to peer computing.
- Dirk Van Deun ( dvandeun@vub.ac.be)
- Rewrote the borg (de)serialiser. Is currently looking at the memory model.
- Jannes Pockele ( jpockele@vub.ac.be)
- Tutorial and initial setup website
- Kristof Van Buggenhout ( kvbuggen@vub.ac.be)
- Unification engine, Borg Nameserver
- Frederik Nyssens ( fnyssens@vub.ac.be)
- Beta-testing, writing demo-programs
- Johan Fabry ( jfabry@vub.ac.be )
- Deborg. An integrated borg debugger. Is looking at infrared possibilities and palm crosscompiling.
- Koen Bailleul ( kbailleu@vub.ac.be)
- Developing the preliminary version of the K user interface; implementing the K-uilib functions.
- Marijn Daniels ( mdaniels@vub.ac.be)
- Beta-testing, wrote a Borg Nameserver.
- Phillippe Demaecker ( we50605@vub.ac.be)
- Beta-testing, writing demo-programs
- Pieter Verheyden ( pverheyd@vub.ac.be)
- Writing MeetingPlanner (p2p application) and researching fault-tolerance for Borg
- Dimitri Verspecht ( dimitri.verspecht@vub.ac.be)
- Porting borg to the visor
- Cedric Vanrykel ( cvrykel@vub.ac.be)
- Adding QoS parameters to the router, implementing socket natives.
- Paul Henri Van Der Steichel ( popol@igwe.vub.ac.be)
- Implementing a JIT compiler, documentation


Questions regarding copying, distributing, using this software can/should be send to cborg@prog.vub.ac.be or to werner.van.belle@vub.ac.be.

Change Log

0.3 -> 0.4
    - OK, the borg core is totally rewritten...
    - Finally a logwindow... (which you can close, but can't open :)
0.4 -> 2.0
    - Borg core completely rewritten
2.0 -> 2.1
    - Case incorporated
    - Changed About box
    - Started with adding test programs
    - Busy flag in CONTINUE gestoken zodat cborg niet concurrent met 
      zijn eigen runt
    - BootFiles der weer bijgestoken en ze laden toch al
    - extentie .cborg er bij ingestoken
    - load primitive fixed (was a small disaster)
2.1 -> 2.2
    - errors reporting in cborgcore opgenomen
    - accept laten werken
    - coretest uitgebreid met test voor een aantal interactieprimitieven
    - multi line syntax coloring introduced
    - Bracketmatching
    - AutoBracketClose
    - Autosave
    - Errorbracket
    - Started with writing a gdb alike debugger for pico programs
2.2 -> 2.3
    - Theos new garbage collector incorporated
    - dictionary model completely rewritten
    - serialisator rewritten
2.3 -> 2.4
    - Johans deborg incorporated
2.4 -> 2.5
    - Changed directory structure to support multiple user interfaces
    - Added Karstens/Dirks tborg
    - Modified core to support a bootstrap kernel and a borg2c compiled kernel
2.5 -> 2.6
    - Changed load primitive to push and pop current directories
    - Configuration files are looked up in ./ ./config and ../config
    - Tackled some K user interface problems
    - Dirks serialiser incorporated
    - Karstens new tborg added
    - Added a bborgcore directory which contains a start of the
      metacircular version.
    - A small explanation about the router config files
2.6 -> 2.7
    - changed structure of makefiles
    - removed configure, libtool, automoc and other way over the top tools
    - changed agent data structure for faster access and less store/restores
    - removed remote dictionaries. Everything are now references
    - fixed dictionary bug which caused cborg to slow down after a while
    - fixed distribution between user interface and actual agent
    - fixed bug in tcborg (input bug)
    - removed compiler warnings in reader (default: cases)
2.7 -> 2.8
    - removed some small bugs from the serializer
    - completely rewrite of the router (nameserver only at the moment)
    - added webbrowser interface
    - added papers/thesis
    - added eerste versie windows user interface (gerecyclede oude versie
      die nu blijkbaar bizonder veel crashed)
    - added structured documentation and automatic web site updating
    - added wendy makefiles (moet nog in documentation komen)
2.8 -> 2.9
    - Makefiles aangepast. compiletime x 2 + enkel hercompileren wat nodig
    - Added Objects.borg example + coloring van examples
    - Added Recursive.borg example
    - Added Serialisation.borg example
    - Fixed a number of eveluator bugs. (wrong error messages, wrong
      garbage collects and so on)
    - Fixed the creation of agents and added serialisation and deserialisation
    - Added the JumpingSieve.borg example
    - Changed the ':' prompt for the windows user interface to a back-quote.
    - Added Persistency.borg example (not yet that good)
    - Added ObjectSieve.borg example (chaning behaviour of methods)
    - Lex/Yacc pico parser toegveogd
    - display native gerudceerd tot printen van text.
    - missging LastBracket initialisation added.
2.9 -> 3.0 
    - changed Interfacing. More pico code/less C-code
    - added cross-referencer
    - added halstead metric
    - fixed a number of memory-claim errors
    - fixed CLK mem_claim bug
    - added 2 examples: SimpleTimer.borg/AdvancedTimer.borg
    - added a whiteboard example
    - tborg_history toegevoegd
    - tailrecursion toegevoegd in IF structure
    - de mogelijkheid is er nu variabelen globaal te definieren.
    - borg-parser toegevoegd, zonder veranderingen op de moment. pico 
      parser in gebruik genomen
    - coretest, metapico en andere fancy ding en verhuist naar de examples
    - external laten werken via ui_call
    - bison.thunked pico parser removed. Not good enough
    - removed theos scanner en reader.
    - removed hborg (replaced by WebServer example)