Unified · Split
| @@ -1,6 +1,15 @@ | ||
| 1 | −Dis VM Project | |
| 1 | +DisVM Project | |
| 2 | 2 | ======================== |
| 3 | 3 | |
| 4 | +The DisVM project is a re-implementation of the [Dis virtual machine specification](http://www.vitanuova.com/inferno/papers/dis.html) that defined the user space of the [Inferno OS](https://en.wikipedia.org/wiki/Inferno_(operating_system)). The Inferno OS was designed to re-hash the ideas in the [Plan 9 From Bell Labs](https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs) operating system but implemented using a platform agnostic language - [Limbo](https://en.wikipedia.org/wiki/Limbo_(programming_language)). The Dis virtual machine was intrinsic to the Inferno OS and ran the byte-code compiled Limbo language. This meant that only the Inferno OS need be ported to a platform and all Limbo compiled applications would 'just-work'. If this sounds familiar, it should, this was in the early 90's and [project Oak](https://en.wikipedia.org/wiki/Oak_(programming_language)) - what would become Java - was being developed by Sun Microsystems. The major difference between the two approaches was that Oak's virtual machine would be ported to various platforms and work with the host OS whereas the Dis virtual machine was tied to Inferno OS which meant there was yet another layer between the host and virtual machine. This decision had advantages, but also had the large disadvantage of requiring and entire separate OS to run Limbo code. | |
| 5 | + | |
| 6 | +This project's intent is to take the Java approach and provide an implementation of the Dis virtual machine that is separate from any OS, including the Inferno OS. The project is written in C++ - using only the standard library where possible - and is intended to support compilation on any platform that has a conforming [C++ 11](https://en.wikipedia.org/wiki/C%2B%2B11) compiler. At present various modules written in Limbo (even the official Limbo compiler) have been verified to run successfully using this implementation. Some precompiled byte-code modules (`.dis` extension) have been provided in the [Downloads](https://bitbucket.org/linuxuser27/disvm/downloads) section. | |
| 7 | + | |
| 8 | +Notes: | |
| 9 | + | |
| 10 | + * Only parts of the built-in [`Sys`](http://www.vitanuova.com/inferno/man/2/sys-0intro.html) and [`Math`](http://www.vitanuova.com/inferno/man/2/math-0intro.html) modules have been written | |
| 11 | + * The `disvm-exec` project does not support the original [`Command`](http://www.vitanuova.com/inferno/man/2/command.html) entry module since the official [`Draw`](http://www.vitanuova.com/inferno/man/2/draw-0intro.html) module is not currently supported. Instead the entry point is defined by `limbo/Exec.m`. | |
| 12 | + | |
| 4 | 13 | # Build instructions |
| 5 | 14 | |
| 6 | 15 | Requirements |
| @@ -22,7 +31,8 @@ Python and gyp are only needed for build file generation. · 15 unmodified lines | ||
| 22 | 31 | |
| 23 | 32 | The source tree is as follows: |
| 24 | 33 | |
| 25 | − - `limbo/` - Source code written in limbo for testing the VM | |
| 34 | + - `limbo/` - Source code written in Limbo for testing the VM | |
| 35 | + - `compiler/` - Copied and slightly modified source code for the official Limbo compiler | |
| 26 | 36 | - `src/` |
| 27 | 37 | - `asm/` - Library for manipulating byte code |
| 28 | 38 | - `include/` - Global include files |
| @@ -41,11 +51,11 @@ See `readme.md` or `license.txt` in source directories for further details or sp · 12 unmodified lines | ||
| 41 | 51 | |
| 42 | 52 | # References |
| 43 | 53 | |
| 44 | −Dis VM specification: http://www.vitanuova.com/inferno/papers/dis.html | |
| 54 | +Dis virtual machine specification: http://www.vitanuova.com/inferno/papers/dis.html | |
| 45 | 55 | |
| 46 | 56 | Limbo language addendum: http://www.vitanuova.com/inferno/papers/addendum.pdf |
| 47 | 57 | |
| 48 | −Inferno OS - Original Dis VM implementation: https://bitbucket.org/inferno-os/inferno-os/ | |
| 58 | +Inferno OS - Original Dis virtual machine implementation: https://bitbucket.org/inferno-os/inferno-os/ | |
| 49 | 59 | |
| 50 | 60 | # Licenses |
| 51 | 61 | |
| @@ -86,7 +96,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI · 34 unmodified lines | ||
| 86 | 96 | |
| 87 | 97 | ### Unless otherwise stated in a `license.txt` or above - [MIT License](https://opensource.org/licenses/MIT) ### |
| 88 | 98 | |
| 89 | −Copyright (c) 2017 ARR | |
| 99 | +Copyright (c) 2017 arr | |
| 90 | 100 | |
| 91 | 101 | Permission is hereby granted, free of charge, to any person obtaining a copy |
| 92 | 102 | of this software and associated documentation files (the "Software"), to deal |