aboutsummaryrefslogtreecommitdiff
path: root/src/lux/optimizer.clj
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lux/optimizer.clj10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lux/optimizer.clj b/src/lux/optimizer.clj
index c032bc7fb..be6df920f 100644
--- a/src/lux/optimizer.clj
+++ b/src/lux/optimizer.clj
@@ -1,5 +1,15 @@
(ns lux.optimizer
(:require [lux.analyser :as &analyser]))
+;; [List of pending optimizations]
+;; Global functions: direct currying or direct invocation when function is known at compile-time
+;; Improving function calls: add extra arities (apply2, apply3, ..., apply16)
+;; Recursion: tail-call optimization
+;; Pattern-matching: decision-trees to avoid unnecessary tests
+;; Less classes generated per function: Fold nested function classes into one.
+;; Mutability for performance: do escape analysis to know when data-structures can be mutated in-place without anybody noticing.
+;; Avoid (un)boxing: Analyser movement of primitive values to/from functions to known when (un)boxing can be avoided.
+;; Pre-compute constant expressions: Find function calls for which all arguments are known at compile-time and pre-calculate everything prior to compilation.
+
;; [Exports]
(def optimize &analyser/analyse)