@@ -13,23 +13,34 @@ The relational algebra is the mathematical model underpinning Project:M36. When
13* more opportunities for interesting optimizations
13* more opportunities for interesting optimizations
14* elimination of odd and easy-to-forget corner cases (such as found when dealing with SQL's NULL)
14* elimination of odd and easy-to-forget corner cases (such as found when dealing with SQL's NULL)
19+Project:M36 now provides binary installations for Windows. Check the (releases page)[https://github.com/agentm/project-m36/releases] for downloads.
23+Binary releases are not yet available for MacOS X, but compiling from source is easy.
27+The currently-preferred method of installation is from source. A future enhancement would be installation from deb or rpm.
16−## Software Dependencies & Installation
29+## Source Installation
18Requirements:
31Requirements:
20* [GHC 7.10 or greater](https://www.haskell.org/downloads)
33* [GHC 7.10 or greater](https://www.haskell.org/downloads)
21−* cabal-install 1.20 or greater (normally part of the Haskell installation
34+* [Haskell stack](https://docs.haskellstack.org/en/stable/README/)
22−* POSIX filesystem
35+* Linux, MacOS X, or Windows OS
24Compilation steps:
37Compilation steps:
26* ```git clone https://github.com/agentm/project-m36```
39* ```git clone https://github.com/agentm/project-m36```
27* ```cd project-m36```
40* ```cd project-m36```
28−* ```cabal sandbox init``` (optional but recommended)
41+* ```stack build```
31−At this point, the TutorialD interactive interpreter can be run using ```cabal run tutd```.
43+At this point, the TutorialD interactive interpreter can be run using ```stack exec tutd```.
34## Accessing Project:M36 Databases
45## Accessing Project:M36 Databases
@@ -47,7 +58,7 @@ In addition to being a relational algebra engine, Project:M36 supports features
48### Transaction Graph
59### Transaction Graph
50−Most DBMSs provide a way to allow the user to specify atomic database state changes. These changes are often wrapped up as "transactions" which, when applied to the database state, offer the illusion of sequential and grouped, atomic changes applied to the databases. Often the only state which can be queried is the snapshot at the time the transaction is opened.
61+Most DBMSs provide a way to allow the user to specify atomic database state changes. These changes are often wrapped up as "transactions" which, when applied to the database state, offer the illusion of sequential and grouped, atomic changes applied to the databases. Often the only state which can be queried is the snapshot at the time the transaction is opened.
52Project:M36 extends this transaction model with the "transaction graph". This feture can be adequately described as version control for transactions. In the legacy DBMS model, the transactions are added to a linear transaction stream where each client is contending over the "head" of the stream- the latest transactions. In the transaction graph model, clients can add named branches and add transactions to the branches, then merge changes back, if necessary.
63Project:M36 extends this transaction model with the "transaction graph". This feture can be adequately described as version control for transactions. In the legacy DBMS model, the transactions are added to a linear transaction stream where each client is contending over the "head" of the stream- the latest transactions. In the transaction graph model, clients can add named branches and add transactions to the branches, then merge changes back, if necessary.
@@ -94,8 +105,3 @@ Though the CSV ("comma-separated values") format cannot represent all possible r
94### Relations as Plots
105### Relations as Plots
96N-attributed relations can be visualized as plots where each tuple represents a point in the plot. Project:M36 can generate gnuplot graphs from 2- and 3-attributed relations.
107N-attributed relations can be visualized as plots where each tuple represents a point in the plot. Project:M36 can generate gnuplot graphs from 2- and 3-attributed relations.