- Allow producing JVM artifacts without source-tracking/debugging information.
- The Design and Implementation of an Extensible System Meta-Programming Language
- HasChor: Functional Choreographic Programming for All (Functional Pearl)
- Compile
not
-like pattern-matching with~
in languages/targets which support it, instead of compiling them asif
s. - How a durable workflow engine works: you might not need a queue
- Dag-Calculus: A Calculus for Parallel Computation
- Allow importing profiles into
project.lux
files in order to allow more re-use of configuration. - Rhombus: A New Spin on Macros Without All the Parentheses
- CppCon 2015: Juan Pedro Bolívar Puente “Transducers: from Clojure to C++"
- CppCon 2015: Jason Turner “The Current State of (free) Static Analysis"
- CppCon 2015: Andrei Alexandrescu “Declarative Control Flow"
- CppCon 2015: Neil MacIntosh “Evolving array_view and string_view for safe C++ code"
- CppCon 2015: Greg Miller “Time Programming Fundamentals"
- CppCon 2015: Joel Falcou PART 1 “Expression Templates - Past, Present, Future” 0. CppCon 2015: Joel Falcou PART 2 “Expression Templates: Past, Present, Future" 0. CppCon 2015: Joel Falcou PART 3 “Expression Templates: Past, Present, Future” 0. Expression templates
- CppCon 2015: Kyle Markley "Extreme Type Safety with Opaque Typedefs"
- CppCon 2015: Kostya Serebryany “Beyond Sanitizers...”
- Superscopes: Local, global... is there any more? - Fabian Renn-Giles [ CppCon 2015 ]
- CppCon 2015: André Bergner “Faster Complex Numbers”
- CppCon 2016: John McFarlane “fixed_point"
- CppCon 2016: Howard Hinnant “Welcome To The Time Zone"
- CppCon 2017: Odin Holmes “Agent based class design”
- CppCon 2017: John McFarlane “CNL: A Compositional Numeric Library”
- CppCon 2017: Walter E. Brown “Programming with C++ Constraints: Background, Utility, and Gotchas"
- CppCon 2018: “Multi-Precision Arithmetic for Cryptology in C++, at Run-Time and at Compile-Time”
- Safe numerics.
- Replace recursive type calls from
(0 "")
to(0 0)
- Extract the variable link-ring machinery being used by both the
control/logic
andmeta/type/check
modules into its own module. - Implement type-level naming (Ghosts of Dependent Proofs-style), in order to give unique names to classes, to force distinctions between them beyond their state types.
- Notation for 2-adic numbers (as a sibling to
Rev
) - Have alternative arithmetic operators for
Fraction
that do not normalize the result after the operation (+'
,-'
,*'
,/'
).- Normalization would obfuscate an interesting fact about working with infinity.
- ^ Which is: (infinity + point) == (infinity / point) == (infinity * (/ point))
- It may also obfusface the possibility that there are multiple infinities (and multiple zeroes) which may be equivalente to one another, but not necessarily equal.
- Such inequality may prove useful in some calculations, but it would be erased during normalization (leading to ambiguities).
- Have a special rules for
Fraction
/Rational
multiplication that says:a/b * b/c = a/c
&&a/b * c/a = c/b
&&a/b * c/d = ac/bd
.- The above rule can make
a/0 * 0/b = a/b
and0/a * b/0 = b/a
, bypassing any possibility for0/0
. - It may also make the de-normalized zeroes and infinities carry useful information, instead of losing it through normalization.
- Unify the handling of globals between extensions, analysis & declaration.
- Replace the usages of single-use variables with the expressions they are bound to, in order to eliminate unnecessary register allocations.
- Polytypic Binary format machinery.
- Go from having I32 variant tags to I08 tags.
0. Make the JVM compiler use
Byte
s instead ofInteger
s for storing variant/sum tags/lefts. - Implement extensible pattern-matching in the compiler, guided by the experiment in
control/pattern
. - Inject the type-names of the different primitive types in the prelude using analysis extensions.
- Eta-conversion in the synthesis phase for inlining/code-fusion optimizations.
- Add special
origin/provenance
parameter toException
s in order to track from which definition they came, in order to disambiguate between multiple possible origins. - Allow inline functions to be partially applied.
- Pre-calculate the sizes of pattern-matching stacks and allocate arrays with those sizes, rather than using dynamically-sized stacks.
- Fix
{library/lux/data/format/tar.invalid_end_of_archive}
error, which makes it impossible to use manually-packaged TAR files. - Aggressively optimize the compiler.
- Replace the usage of .tar files in the compiler with a new (more consistent) archiving format. Both for packaging libraries and making cache files.
- Unary
-
and/
for numbers that feature inverses. - multithreading: a tiny runtime that allows you to execute JavaScript functions on separate threads
- Get rid of the
.in_module#
extension. It can be replaced by a macro that piggy-backs on the existingquoted_module
mechanism. - An anonymous type for un-tagged sums. E.g.
{3 #1 x}
=(All (_ a b c d) (Or a b c (Or d (type_of x))))
&&{3 #0 x}
=(All (_ a b c d) (Or a b c (Or (type_of x) d)))
- Unsafe text module.
- Dissolve
math/random
into the rest of the standard library. - Dissolve
injection/.../text
into the rest of the standard library.
- (Commit) Optimize compilation of pattern-matching expressions like
(when <input> <literal> <then> _ <else>)
into if expressions that test the literal, instead of full-blown pattern-matching.- Add
if_i64
&if_f64
&if_text
synthesisTerm
s.
- Add
- (Commit) Add
<
,<=
,>
,>=
definitions to every module that has anOrder
. - (Commit) Re-name
panic!
tohalt!
in honor of the halting problem. - (Commit) Re-name
I8
toI08
- (Commit)
N/D
native parser syntax forFraction
numbers. - (Commit)
(+|-)N/D
native parser syntax forRational
numbers. - (Commit) The
safe_decimal
random generator should produceDecimal
s all over the range of safe values, instead of just the[0, 1]
interval. - (Commit) Make the denominator in
Rational
aNatural
number. - (Commit) Fix stack-overflow error during TAR compression when trying to deploy with Aedifex.
- (Commit) When setting nested directories in Aedifex's
"target"
, have the compiler create the nested directories. - (Commit) Fix
Cannot find artifact data.
bug in scripting compilers. - (Commit)
Number
alias in all themath/number
modules. - (Commit) Compile
or
-like pattern-matching, andand
-like pattern-matching with||
and&&
in languages/targets which support it, instead of compiling them asif
s.
- (Commit) Full names for number modules.
nat
=>natural
,dec
=>decimal
,rat
=>rational
,int
=>integer
,rev
=>revolution
,frac
=>fraction
,char
=>character
.- Also, big-name aliases for the types.
- (Commit) Fix bug wherein two imported modules can have the same alias.
- (Commit) Add a
=
definition to every module that has anEquivalence
. - (Commit) Eliminated the bootstrapping compiler
- (Commit) Better syntax for the
.when#
extension. - (Commit) Re-name the
left
andright
macros in the prelude. Also, get rid of their highlighting inlux-mode
. - (Commit) Make type-normalization no longer confuse local type parameters with globally-defined types/macros.
- Remove instances of
(.except left right)
.
- Remove instances of
- (Commit) Favor partial calls over successive calls when compiling function application.
- (Commit) Re-name
Codec
toEmbedding
. Alternatively, re-name toFormat
. - (Commit) Get rid of
library/lux/world/db
. - (Commit) Replace uses of
All
withfor_all
orfor_any
. Do the same forEx
. - (Commit) Get rid of
licentia
. - (Commit) Add extensions for pattern-matching and function definition, instead of having custom syntax for both.
- (Commit) Re-name
Format
toInjection
. - (Commit) Fix bug wherein private aliases in module
A
of public definitions in moduleB
are seen in moduleC
, if it importsA
. - (Commit) Re-name
Parser
toProjection
. - (Commit) Introduce an
Int
-based alternative toFrac
(tion) calledRat
(tional). - (Commit)
<-
as reverse-order function syntax. - (Commit) Re-name
Codec#encoded
toinjection
, andCodec#decoded
toprojection
. - (Commit) Move
abstract/mix
toalgorithm/mix
. - (Commit) Re-name Ratio to Frac(tion).
- (Commit) Re-name
check.subsumes?
tocheck.subsumed?
. - (Commit) Get rid of
Dec
encoding/decoding default extensions. - (Commit) Re-name Frac(tion) to Dec(imal).
- (Commit) Implement polytypic counting/length via induction.
- (Commit) Re-implement all the current polytypic code just using induction.
- (Commit) Allow for an alternative syntax for anonymous Variant/Sum construction where just a statically-known bit and a term are provided.
- e.g.
{#0 left}
, or{#1 right}
. They are equivalent to similar terms with a0
lefts term prepended.
- e.g.
- (Commit) Aliases:
Any => True/Verum
&&Nothing => False/Falsum