Error formatting macro: pagetree: java.lang.NullPointerException

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.

Project Ideas

Clojure

Predicate Dispatch

Brief Explanation: A considerable amount of work has been done towards a viable predicate dispatch implementation for Clojure. However quite a few more enhancements to core.match are required before it can be used for this purpose. The work should account for other Clojure dialects ClojureCLR / ClojureScript.

Expected Results: A usable implementation of predicate dispatch.

Knowledge Prerequisite: Familiarity with Clojure. Familiarity with Chambers / Chen efficient predicate dispatch paper and Luc Maranget's paper on compiling pattern match expressions into good decisions trees.

Skill Level: Medium

Mentor: David Nolen

cKanren extensions to core.logic

Brief Explanation: Adding constraint logic programming facilities to core.logic would widen the scope of problems that core.logic can be applied to - including predicate dispatch. We would like to adapt the cKanren extensions to core.logic with an eye for obvious improvements to the their design in terms of generality as well as performance.

Expected Results: core.logic with cKanren extensions.

Knowledge Prerequisite: Familiarity with Clojure. Familiarity with Chapter 3 of William Byrd's dissertation and the recent cKanren paper.

Skill Level: Medium to High

Mentor: David Nolen

Linter based on Ambrose's analyzer work

Overtone

ClojureScript

Performance enhancements

Brief Explanation: ClojureScript has numerous areas where the performance can be dramatically improved. These include but are not limited to removing use of arguments in multiple arity function dispatch, adding persistent data structures, and using type inference. A benchmark suite similar to test.benchmark for tracking improvements and regressions would be desired, the benchmark suite should provide idiomatic JavaScript as the baseline.

Expected Results: Improved overall performance verified by a benchmark suite.

Knowledge Prerequisite: Familiarity with Clojure.

Skill Level: Medium

Mentor: David Nolen

Introspection support

Brief Explanation: ClojureScript currently has very limited introspection support. Currently it's impossible to view macroexpansion, to examine docstrings, examine vars or namespaces, etc.

Expected Results: Improved introspection facilities more in the line with those provided by Clojure.

Knowledge Prerequisite: Familiarity with Clojure.

Skill Level: Medium

Mentor: David Nolen

Debugger support

Brief Explanation: ClojureScript currently provides very little support for precise debugging. Source mapping would be an initial step. All the mature JavaScript runtimes provide APIs for stepping through JavaScript. A robust interface for integrating with these different APIs is desirable. A concrete implementation for Chromium or Node.js would be extremely useful to ClojureScript developers. An ambitious take on this project would be s-expr level stepping of ClojureScript code.

Expected Results: A clean interface for integrating with existing JavaScript debugging APIs. A concrete implementation for a popular JavaScript platform - Chromium, Node.js.

Knowledge Prerequisite: Familiarity with Clojure.

Skill Level: High

Mentor: David Nolen

Pluggable backend

Brief Explanation: The ClojureScript compiler is currently very JavaScript-centric. It would be beneficial to make the compiler pluggable. This would allow ClojureScript developers to easily target other platforms - Lua, Python, Java, etc.

Expected Results: A compiler that can easily be extended to generate source / bytecode for other languages.

Knowledge Prerequisite: Familiarity with Clojure.

Skill Level: Medium

Mentor: David Nolen