Skip to content

Commit

Permalink
Bump to version 0.2.0 - cljs and recursive algos
Browse files Browse the repository at this point in the history
  • Loading branch information
turbopape committed Oct 4, 2016
1 parent f2bc76b commit d90e872
Show file tree
Hide file tree
Showing 7 changed files with 392 additions and 254 deletions.
21 changes: 15 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
CHANGELOG
==========
## 0.2.0
* Add ClojureScript support thanks to the use of reader conditionals,
the same namespaces are used.
* Removed dependencies to loom and combinatorics. Use own [Tarjan's
algorithm](https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm) implementation.
* Removed reliance on core.async, now using a purely functional
implementation using loop/recur (So ClojureScript Support is
possible).
* Added new error type : `:unable-to-schedule`

## 0.1.4
* Now the main channel is buffered. No need to wait for a place to put
* The main channel is buffered. No need to wait for a place to put
on the work of a resource, there is enough room for all of them.
* Eliminated a "silly" (<!! (go <! ... reminiscent of the days from
Clojure Cup.
* Fix Code Style.

## 0.1.3
* Now Errors for non existent tasks show a map { task-id [missing task-id]...

## 0-1.0 - 0.1.2
* Version Bumps to allow clojars to update.
* Now supports milestones
* Now supports detailed error messages
* Now detects cyclic graphs
* Add support for milestones
* Add support for detailed error messages
* Add support for cyclic graphs

17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Milestones - The Thinking Tasks Scheduler
> "Any sufficiently advanced technology is indistinguishable from magic"
- According to Clarke's 3rd Law

Milestones is a Clojure library that needs only your project tasks description in order to generate the best possible schedule for you. This is based on priorities of scheduling that you set (in terms of fields in tasks, more about this in a second).
Milestones is a Clojure and ClojureScript library that needs only your project tasks description in order to generate the best possible schedule for you. This is based on priorities of scheduling that you set (in terms of fields in tasks, more about this in a second).

Constraints on tasks are:
- Resources (i.e, which resource is needed to perform a particular task),
Expand Down Expand Up @@ -217,11 +217,14 @@ should not happen).

Error Map Key | What it means
-------------------------------|-----------------------------
:reordering-errors | { 1 [:priority],...} You gave priority to tasks according to fields (:priority) which some tasks (1) lack)
:unable-to-schedule | Something made it impossible for the
recursive algorithm to terminate...
:reordering-errors | { 1 [:priority],...} You gave priority to tasks according to fields (:priority) which some tasks (1) lack).
:tasks-w-predecessors-errors | :{6 [13],...} These tasks have these non-existent predecessors.
:tasks-w-no-resources | [1,... These tasks are not milestones and are not assigned to any resource
:tasks-cycles | [[1 2] [3 5]... Couple of tasks that are in a cycle : 1 depends on 2, and 2 on 1
:milestones-w-no-predecessors | [1 2... These milestones don't have predecessors
:tasks-w-no-resources | [1,... These tasks are not milestones and are not assigned to any resource.
:tasks-cycles | [[1 2 3]... Set of tasks that are in.
a cycle. In this example, 2 depends on 1, 2 on 3 and 3 on 1.
:milestones-w-no-predecessors | [1 2... These milestones don't have predecessors.


## History
Expand All @@ -234,6 +237,10 @@ Cup 2014. You can find the code and some technical explanation of the
algorithms in use (core.async, etc...)
[here.](https://github.com/turbopape/milestones-clojurecup2014)

as of version 0.2.X and above, milestone uses a purely functional
algorithm using the same logic of assigning work units, but simply
relying on recur to advance the system status.

Although the prototype showcases the main idea, this repository is the official one, i.e, contains latest versions and is more thoroughly tested.

## Code Of Conduct
Expand Down
24 changes: 19 additions & 5 deletions project.clj
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
(defproject automagic-tools-milestones "0.1.4"
(defproject automagic-tools-milestones "0.2.0"
:description "Milestones : the Automagic Project Tasks Scheduler"
:url "http://turbopape.github.io/milestones"
:license {:name "MIT"
:url "http://opensource.or g/licenses/MIT"}

:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/core.async "0.2.374"]
[org.clojure/math.combinatorics "0.1.1"]
[aysylu/loom "0.5.4"]
[expectations "2.0.9"]]
[org.clojure/clojurescript "1.9.229"]
[expectations "2.1.8"]]

:clean-targets ^{:protect false} ["target"]

:plugins [[lein-cljsbuild "1.1.4"]]

:cljsbuild {
:builds [{:id "milestones"
:source-paths ["src"]

:compiler {:output-to "target/out/milestones.js"
:output-dir "target/out"
:optimizations :none
:source-map true}}]}

:scm {:name "git"
:url "https://github.com/turbopape/milestones.git"}

:profiles {:uberjar {:aot :all}
:dev {:plugins [[lein-expectations "0.0.8"]]}})
Loading

0 comments on commit d90e872

Please sign in to comment.