Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History


Information for Students

Adding a Proposal

Project Ideas


Mentors - David Nolen

  • Predicate Dispatch
  • cKanren extensions to core.logic
  • Linter based on Ambrose's analyzer work


Mentors - Sam Aaron


Mentors - David Nolen

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 language.

Knowledge Prerequisite: Familiarity with Clojure.

Skill Level: Medium

Mentor: David Nolen