Skip to content

Latest commit

 

History

History
905 lines (816 loc) · 94.8 KB

CHANGELOG.md

File metadata and controls

905 lines (816 loc) · 94.8 KB

Changelog

Full Changelog

Implemented enhancements:

  • Remove rebar3 hook for 'clojerl compile' command #764
  • Imitate support from ClojureScript to encode/decode into/from Erlang value #759
  • Improve error reporting for erl-binary* #752
  • clojure.core/load-lib: include original stacktrace when rethrowing error #749
  • Compiler option to output BEAM assembly #730

Fixed bugs:

  • REPL started from an Erlang shell outputs extra characters #762
  • Starting a REPL fails when calling clojure.main/main from Erlang shell #758
  • Binary pattern fails when using a variable for :size #755
  • clojure.edn/read fails when using a PushbackReader #747
  • Can't compile on Windows #745
  • bin/clojerl script fails in Linux #741
  • Error when reloading namespace from a file that refers a var in another namespace #732
  • clojerl application should comply with OTP guidelines #728

Closed issues:

  • Compile with Erlang/OTP 23 #753
  • Improve performance of clojure.core/last #738
  • Pin rebar3_clojerl version before creating the next release #723
  • Reducers #248

Merged pull requests:

0.6.0 (2020-03-22)

Full Changelog

Implemented enhancements:

  • Improve performace of getting from a Clojure map #714
  • case thrown "No match" error - stacktrace doesn't show where the violating code (plus line number) is in #711
  • Add line number of where compile error occured #706
  • clj_module should remove modules when process that loaded them dies #704
  • Output .core file to the same dir as .beam #694
  • Compile to native code #310

Fixed bugs:

  • clje.user ns in REPL doesn't refer clojure.core when started from clean project #726
  • Wrong implementation of clojerl.Var:has_root/1 #718
  • mix-collection-hash and hash of unordered set must be equal #702
  • Create clje.user ns during initialization #699
  • in-ns not available in namespace created with in-ns #697
  • Starting socket REPL server prints unnecessary messages #691
  • Pattern matching ignores existing bound symbol #684
  • Item in lazy sequence processed twice when reducing #682
  • Unreadable error message when calling undefined local function #679
  • sort and sort-by have unexpected behavior with compare function #670
  • [#684] List of known variable must be ordset when emitting pattern #686 (jfacorro)

Closed issues:

  • Improve record operations performance #720
  • Improve multimethod performance #716
  • Implement an Erlang Clojure API #681
  • Generate cover reports #677
  • Create issue templates #673
  • Inquiry: can Cider IDE be used with Clojerl? #671
  • State of Clojerl? #667
  • Xenial in Travis CI doesn't support OTP 18 #663
  • Use Erlang macros from Clojerl code #662
  • Better behaviour support #661
  • Refs, Agents and Atoms #117
  • Delay, Future and Promise #90

Merged pull requests:

0.5.1 (2019-07-28)

Full Changelog

Implemented enhancements:

  • String could implement the ISeq and IColl protocols #648
  • rlwrap is not available in MINGW64 #642
  • Implement Core Erlang interpreter to avoid generating modules when evaling #406

Fixed bugs:

  • Avoid incrementing the atom count #659
  • bin/clojerl does not work on MINGW64 #641

Closed issues:

  • Use pre provider_hook from latest rebar3_clojerl #656
  • Publish as a hex package #652
  • StructMaps #328
  • Implement 'Map namespace syntax' #325

Merged pull requests:

0.5.0 (2019-06-16)

Full Changelog

Implemented enhancements:

  • Improve performance of calling anonymous fns #631
  • Cycle, Iterate and Repeat #630
  • Experiment with Clojure vector implementation #628
  • Run benchmarks comparing them against Clojure JVM #589

Fixed bugs:

  • extend-type for default doesn't work as expected #616
  • Using clojure.core/nth in an inifinite lazy seq never returns #607
  • Hash collisions generate wrong behaviour for set #590
  • str function for namespaces returns unexpected result #581
  • Eduction should implement ISeqable #562

Closed issues:

  • Embed type dispatch in the protocol module #644
  • Improve implementation of clojure.core/str and clojure.string/capitalize #637
  • Build with Erlang/OTP 22.0 #634
  • Performance degradation when reducing a vector #625
  • Avoid calling constructor function for empty literal collections #622
  • Examples? #618
  • Bad break character in clje rlwrap command #610
  • Dispatch value in defmethod can't be a qualified symbol #605
  • Migrate the rest of clojure.test-clojure.* from Clojure upstream #587
  • Build with OTP 21.1 #585
  • (/ 1) throws an undef exception #583
  • Stateful Transducers #249

Merged pull requests:

  • Prepare release 0.5.0 #646 (jfacorro)
  • [Closes #644] Embed type dispatch in the protocol module #645 (jfacorro)
  • Avoid creating erlang.util.UUID for each ProcessVal and TransducerSeq #643 (jfacorro)
  • Fix CI #640 (jfacorro)
  • Improve clojerl.Var/apply performance #639 (jfacorro)
  • [Closes #637] Improve str and capitalize implementation #638 (jfacorro)
  • [Closes #630] Cycle, Repeat and Iterate #636 (jfacorro)
  • [Closes #634] Erlang/OTP 22.0 #635 (jfacorro)
  • Update benchmark comparing with Clojure #633 (jfacorro)
  • [Closes #631] improve performance apply anon fn #632 (jfacorro)
  • [#628] Experiment with Clojure vector implementation #629 (jfacorro)
  • Add missing cases from the cljs benchmarks #627 (jfacorro)
  • [Closes #625] Improve perf reduce vector #626 (jfacorro)
  • Update benchmark results #624 (jfacorro)
  • [Closes #622] Emit literal empty data structures instead of calling function #623 (jfacorro)
  • [#589] Benchmarks clojerl vs clojure #621 (jfacorro)
  • [#90] Delay #620 (jfacorro)
  • [#618] Improve documentation for Getting Started #619 (jfacorro)
  • [Closes #616] extend-type fails for default #617 (jfacorro)
  • [Closes #249] stateful transducers #615 (jfacorro)
  • [Fixes #562] Support ISeqable for Eduction through an EductionSeq type #613 (jfacorro)
  • [Fixes #610] Fix typo in clje script #612 (jfacorro)
  • [#587] migrate clojure test clojure printer #611 (jfacorro)
  • [#587] migrate clojure.test-clojure.test-fixtures #609 (jfacorro)
  • [Fixes #607] Traverse seq when calling nth for ISequential instead of using to_list #608 (jfacorro)
  • [Closes #605] Using qualified symbol in defmethod doesn't fail #606 (jfacorro)
  • [#587] Migrate clojure.test-clojure.special #604 (jfacorro)
  • [#587] Migrate clojure test clojure vectors #603 (jfacorro)
  • [#587] Add clojure.test-clojure.refs (which is empty) #602 (jfacorro)
  • [#587] migrate clojure.test-clojure.rt #601 (jfacorro)
  • [#587] Migrate clojure.test-clojure.repl #600 (jfacorro)
  • [#587] migrate clojure test clojure predicates #599 (jfacorro)
  • [#587] Add clojure.test-clojure.other-functions #598 (jfacorro)
  • [#587] Add clojure.test-clojure.ns-libs #597 (jfacorro)
  • [#587] migrate clojure test clojure for #596 (jfacorro)
  • [#587] Migrate clojure.test-clojure.fn #595 (jfacorro)
  • [#587] Add clojure.test-clojure.evaluation #594 (jfacorro)
  • [#587] Migrate clojure.test-clojure.data-structures #593 (jfacorro)
  • [#587] clojure.test-clojure.clojure-walk, clojure.test-clojure.control #592 (jfacorro)
  • [Fixes #590] set hash collisions generate problems #591 (jfacorro)
  • [Closes #585] Build with OTP 21.1 #586 (jfacorro)
  • [Fixes #583] divide arity 1 fails #584 (jfacorro)
  • [Closes #581] str for namespaces #582 (jfacorro)

0.4.1 (2018-11-28)

Full Changelog

Fixed bugs:

  • Memory leak when using clj_rt:print/1 #579

Merged pull requests:

  • [Fixes #579] Memory leak on clj_rt:print/1 #580 (jfacorro)

0.4.0 (2018-11-10)

Full Changelog

Implemented enhancements:

  • Use rebar3_clojerl plugin to compile clojerl #563
  • Improve instance? and satisfies? performance #552
  • OTP 21.x compatible #545

Fixed bugs:

  • defmethod can generate problematic var names #573
  • catch accepts any symbol as the exception type #571
  • Providing a value that doesn't implement IFn to a keyword shouldn't fail #570
  • symbol should parse name with slash #568
  • print-method implementation for UUIDs is not loaded correctly #558
  • Handle hash collisions in maps and sets #557
  • Hash for empty unordered and ordered collection is the same #555
  • Find a workaround to issue ERL-658 for letrec #547

Closed issues:

  • Unable to < make repl > #577
  • clojure.edn #550

Merged pull requests:

  • [Closes #577] make repl fails on ubuntu #578 (jfacorro)
  • [Closes #571] Warn when symbol is not resolved as a type #576 (jfacorro)
  • [Fixes #570] Return nil or default value for general get #575 (jfacorro)
  • [Fixes #573] Generate better names for defmethod implementation vars #574 (jfacorro)
  • [Closes #550] Implements clojure.edn #572 (jfacorro)
  • [Fix #568] Parse slash when name includes it #569 (jfacorro)
  • Update rebar3_clojerl plugin #567 (jfacorro)
  • Return name for the Core chunk #566 (jfacorro)
  • Upgrade rebar3 plugin #565 (jfacorro)
  • [Closes #563] Use rebar3 plugin #564 (jfacorro)
  • Timestamp to from date #561 (jfacorro)
  • [Closes #557] Handle hash collisions #560 (jfacorro)
  • [Fixes #558] Move print-method impls for UUID and Date to clojure.core #559 (jfacorro)
  • [Fixes #555] Change the initial hash value for unordered collections #556 (jfacorro)
  • Small change in the implementation for cons in clojerl.Map #554 (jfacorro)
  • [Fixes #552] Avoid calling clj_rt:type[_module]/1 #553 (jfacorro)
  • Remove unused dev deps, update eflame with latest improvements #551 (jfacorro)
  • [Closes #545] OTP 21 compatible #549 (jfacorro)
  • [Closes #547] letrec workaround ERL-658 #548 (jfacorro)

0.3.0 (2018-06-30)

Full Changelog

Implemented enhancements:

  • clojure.core/load-lib reports the wrong stacktrace on error #536
  • Return information for compiled BEAM files #507
  • Improve performance on protocol dispatch #504
  • Add core Erlang functions to clojure.core #471
  • Avoid checking for a fake_fun in the Fn protocol implementation for Var #156

Fixed bugs:

  • char? returns the wrong result #541
  • rseq should return nil for empty vector #538
  • Re-binding value for multimethod var breaks implementation function resolution #534
  • Wrong message in clojure.test when ERROR #532
  • Multiple "#_" makes the reader crash #525
  • Improve message for bad arity error in anonymous functions #524
  • Improve analysis and error message for unresolved symbol in def #523
  • Correctly read and expand fully qualified keywords with aliases #521
  • Use fully qualified call in inline function for nil? #519
  • +1 is read as -1 (!!!) #517
  • docstring for namespaces is lost #516
  • Unexpected error when referring the same var #509

Closed issues:

  • Implement ILookup for Erlang lists #530
  • Improve processing of arguments in apply function for Vars #512
  • IReversible #506

Merged pull requests:

  • Add example for letfn #546 (jfacorro)
  • [Fixes #525] Handle multiple contiguous discards #544 (jfacorro)
  • Remove unnecesary code from RSeq implementation and improve test coverage #543 (jfacorro)
  • [Fixes #541] Check for a binary with a single utf8 character in char? #542 (jfacorro)
  • Represent UUID with lower case letters #540 (jfacorro)
  • [Fixes #538] rseq return nil for empty vectors #539 (jfacorro)
  • [Closes #536] Allow two arguments for throw, the second will be the stacktrace #537 (jfacorro)
  • [Fixes #534] Always provide the Var and not its bound value #535 (jfacorro)
  • [#532] Get the var's name from its meta #533 (jfacorro)
  • [Closes #530] Implement ILookup for Erlang lists #531 (jfacorro)
  • [#516] ns docstring lost #529 (jfacorro)
  • [Closes #523] Check if inside def when there is an unresolved symbol #528 (jfacorro)
  • [Closes #524] Improve error message when calling anonymous functions with badarity #527 (jfacorro)
  • [Closes #525] Handle double discard dispatch #526 (jfacorro)
  • [Fix #521] Correctly read :: keywords with aliased ns #522 (jfacorro)
  • [Fix #519] Use fully qualified call to clojure.core/list #520 (jfacorro)
  • [Fixes #517] Change check for negation and add tests #518 (jfacorro)
  • [#156] Invert the order of clauses for checking fake_fun value #515 (jfacorro)
  • [Closes #156] Mark vars inside fake_funs and when macroexpanding #514 (jfacorro)
  • [Closes #512] Avoid calling maps:get/[2,3] #513 (jfacorro)
  • [Closes #506] Implement IReversible for vectors #511 (jfacorro)
  • [Closes #509] Don't error if the var is the same #510 (jfacorro)
  • [Closes #507] Return output files from compile_file function #508 (jfacorro)
  • [Closes #504] Reimplement protocol dispatch to improve performance #505 (jfacorro)

0.2.0 (2018-04-08)

Full Changelog

Implemented enhancements:

  • Return tuples instead of vectors for erlang.Map's seq implementation #502
  • 100% test coverage for clojerl.Vector.ChunkedSeq #500
  • Avoid regenerating atom from binary in apply function for Vars #495
  • Improve performance when reading integer and float #493
  • Don't crash the VM when running clojure.main and there's an error #475
  • Replace code in regex functions for pattern match #473
  • Emit local call for fake funs when the call is a recursive one #469
  • Provide similar command line interface as clojure and clj binaries #467
  • clojure.core/spit should also work for raw binary #463
  • Replace clj_utils:error/throw for Erlang macros to get better stacktraces #460
  • Move docs to clojerl.github.io #457
  • Remove references to Long or long and auto-promoting #443
  • Use new ets:select_replace/2 function for CAS in Atom when available #421
  • Implement protocol to convert Clojure collections into Erlang data types and vice-versa #320
  • Time reader, analyzer and emitter separately in compiler #250
  • Change the .e suffix notation for literal Erlang funs #114

Fixed bugs:

  • transduce implementation calls seq-reduce with the wrong argument order #498
  • args variable is trapped in fn* because of bad Core Erlang generation #490
  • Unexpected bad performance for static function call to + #487
  • clojure.core/source is not working on try.clojerl.online #485
  • Stack trace pretty printing fails when args are provided instead of arity #483
  • REPL no longer starting when clje script doesn't get arguments #481
  • Using -e in clje script fails #478
  • Don't crash the VM when running clojure.main and there's an error #475
  • Unexpected behaviour using _ when pattern matching in case* #464
  • clojure.core/spit should also work for raw binary #463
  • Remove references to class and add missing type? function #455
  • Using a fn inside a def for initializing its value results in error #453
  • Running benchmarks fails #448
  • Check results from running Clojure tests #447
  • Build fails because of parsing of version #444
  • [#495] Fix bug introduced binary_to_atom usage reduction #497 (jfacorro)

Closed issues:

  • Implement inlining #489
  • Should be possible to pattern match exception type with variable incatch clause #436
  • Allow error types in catch clause #291

Merged pull requests:

  • [Closes #502] Return Erlang list of Erlang tuples #503 (jfacorro)
  • [Closes #500] Complete test coverage clojerl.Vector.ChunkedSeq #501 (jfacorro)
  • [Fixes #498] Fix order of arguments and use satisfies? instead of instance? #499 (jfacorro)
  • [Closes #495] binary_to_atom usage reduction #496 (jfacorro)
  • [Closes #493] Compile regular expressions for numbers and run them only once #494 (jfacorro)
  • [Closes #489] Inlining #492 (jfacorro)
  • [Closes #490] Funs Core Erlang generation bug #491 (jfacorro)
  • [Closes #487] Rename reduce1 and into1 so that the final ones get used in the end #488 (jfacorro)
  • [Closes #485] Avoid failure for source #486 (jfacorro)
  • [Closes #483] Handle the case when args are provided #484 (jfacorro)
  • [Closes #481] Fix bug introduced by #478 #482 (jfacorro)
  • [#320] Protocol for conversion of collections to Erlang collections #480 (jfacorro)
  • [Closes #478] Expand extra arguments differently #479 (jfacorro)
  • [Closes #421] Use ETS compare-and-swap for Atoms when available #477 (jfacorro)
  • [Closes #475] Don't crash when an error occurs while loading #476 (jfacorro)
  • [Closes #473] Use pattern matching #474 (jfacorro)
  • Change the atom used as a type tag #472 (jfacorro)
  • [Closes #469] Emit local calls for recursive calls in fake funs #470 (jfacorro)
  • [#467] Similar CLI to clojure #468 (jfacorro)
  • [Closes #463] Process file options #466 (jfacorro)
  • [Closes #464] Case duplicate_var error #465 (jfacorro)
  • [Closes #291] Catch accepts error type #462 (jfacorro)
  • [Closes #460] Replace error generating function calls for Erlang macros #461 (jfacorro)
  • [Closes #436] Allow symbols in error type position for catch clauses #459 (jfacorro)
  • [Closes #457] Move docs #458 (jfacorro)
  • [Fixes #455] Replace references to class for type #456 (jfacorro)
  • [Fixes #453] Error when using fn with def #454 (jfacorro)
  • [Closes #250] Report time for read, analyze, emit & eval separately #452 (jfacorro)
  • Remove some TODOs from clojure.core #451 (jfacorro)
  • [Closes #447] Check test results #450 (jfacorro)
  • [Closes #448] Running benchmark fails #449 (jfacorro)
  • [Closes #443] Remove references to long, auto-promoting and integer overflow #446 (jfacorro)
  • [#444] Fix version regex, don't fail on parsing version #445 (jfacorro)
  • [Closes #114] Tagged literal for erl funs #442 (jfacorro)

0.1.0 (2017-10-23)

Full Changelog

Implemented enhancements:

  • Define Erlang expr() type in the analyzer so that maybe dialyzer can do its magic #437
  • Move clojure.test-helper to test directory #432
  • Iterating over chars in a String on print-method is very inefficient #424
  • Use sh instead of bash in bin/clojerl #417
  • Add replace function to String type #415
  • Avoid having to load all related modules during application start #413
  • Improve help text in bin/clojerl #404
  • nil should not implement protocols by default #402
  • Use dot syntax in clojure.string #400
  • Use Erlang implementation of murmur3 hashing and check performance difference #393
  • Run Clojure tests from outside Common Test #392
  • Avoid protocol resolution when possible #388
  • Run benchmarks using clojure.main #384
  • Remove arbitrary precision functions #378
  • Avoid creating a type instance when checking the type #376
  • Create report based on the benchmark results #373
  • Rename and re-organize type and modules #366
  • Move internal definitions in clojerl.hrl to an internal header file #363
  • unread shouldn't be part of clojerl.IReader protocol #358
  • clojure.repl/source is not implemented #321
  • Compile with OTP 20 #316
  • assert-args returns an unreadable error message #314
  • Time benchmark #308
  • Replace the mention of forms for modules #296
  • The context value in env is not used #295
  • Erlang 19.3 Common Test requires end_per_* when init_per_* is there #277
  • Make dialyzer happy #266
  • Move clojure source files to src/clj and test files to test/clj #265
  • Make some clojerl modules sticky, like clojure.core #264
  • Avoid generating unique atoms in gensym #259
  • Migrate to rebar3 #253
  • Items in LazySeqs evaluated multiple times #246
  • Remove any mention of Java in docstrings #245
  • Make Env/State the last argument in Erlang code #233
  • Rename clj_core to clj_rt (?) #232
  • Rename anno to ann when referring to an annotation #228
  • Rename clojerl.protocol to clj_protocols #222
  • Rename *warn-on-type-resolution* to *warn-on-infer* #220
  • Improve implementation of apply for Var #206
  • Add target to run benchmarks and store the results in a file #204
  • Reduce runtime overhead for invoke (IFn) and resolve (protocol) #202
  • Splice "block" Erlang syntax form #195
  • Enclosing "let" and "loop" in a fun for a scoping context might not be necessary #194
  • Create script to run clojure tests #188
  • Protocols: missing Object type for a catch all implementation #185
  • deftype*: remove module from clj_module after compiling in emitter #175
  • Init expressions for vars could be evaluated at compile time #171
  • Remove prefix from protocol (actually behavior) functions #163
  • Calculate hash only once for each value #153
  • Write some simple benchmarks #149
  • Can't use values with metadata as keys because equality doesn't work #148
  • Explore the possibility of replacing wrapper funs for lexical scopes #139
  • clj_util:throw* should be clj_utils:error* in most cases #138
  • Give namespaces their own type #104
  • When emitting a Clojure if expression avoid generating an Erlang variable for the true value #93
  • Consider dropping the use of erl_syntax and rolling syntax forms by hand #91
  • Avoid having to compile the whole module multiple times during compilation #86
  • Avoid multiple passes for parse_def and parse_fn #66
  • Remove erl_fun reader dispatch #64
  • clojerl.Var: maybe change internal representation of ns and name from symbol to binary #40
  • Integration with Travis CI #35
  • Integrate with Travis CI #26
  • Change protocol implementation to avoid the generation of too many modules #24
  • data structures: look into implementing vectors and/or sets with maps/tuples #19
  • reader: keep track of line and column information #15

Fixed bugs:

  • Warn when defining a var that overrides an existing var #438
  • Bug when parsing options in bin/clojerl #430
  • Defining a var in pre-compiled namespace doesn't work as expected in REPL #429
  • Vars defined with defn have :arglists as #erl() #426
  • Wrong IStringable implementation for Erlang strings #422
  • Include compiler as a dependency in .app file #419
  • Avoid having to load all related modules during application start #413
  • Type defined with deftype can't be used in the implementation functions #411
  • Namespace import and aliases should also be kept as modules attributes #407
  • Improve help text in bin/clojerl #404
  • nil should not implement protocols by default #402
  • Macro-expansion of dot syntax doesn't keep tag #396
  • Generated symbol in syntax quote doesn't keep meta #394
  • Adding a type hint to a list doesn't have any effect #381
  • Binding value for *compile-path* in clojure.main should be a binary #371
  • Dynamic vars that are functions should also check the current binding #349
  • Metadata followed by a comment is lost #347
  • Force evaluation order when building lists #345
  • Metadata is lost after macroexpansion and syntax-quote #341
  • Multimethods are registered with only name #339
  • Emit the functions for a protocol instead of the callback attributes #337
  • Printing readably does not work for vectors and other types #335
  • count should be O(1) for clojerl.List #326
  • Some type hints are ignored #323
  • Compile with OTP 20 #316
  • assert-args returns an unreadable error message #314
  • Add clojure.test-clojure.compilation tests #305
  • Don't generate an on_load function if there are no expressions. #304
  • benchmark target is broken #302
  • Replace the mention of forms for modules #296
  • Missing location information for symbol #293
  • Binary file for clje.user is not written by design in clojure.main #289
  • Handle _ and - correctly when loading files #287
  • Include full path for clje/cljc files #286
  • Erlang 19.3 Common Test requires end\per\\* when init\per\\* is there #277
  • Modify extension from .clj to .clje #271
  • Print Erlang printable lists as #erl"" #268
  • Consider no namespace when identifying special forms #257
  • Items in LazySeqs evaluated multiple times #246
  • Remove any mention of Java in docstrings #245
  • :arglists metadata in Vars gets converted into an Erlang list #242
  • Non-printable strings can't be printed readably #239
  • Metadata for Vars needs to be analyzed #218
  • set! is not working when applied to vars #214
  • Previously successful clojure tests are failing or producing errors #212
  • Location information is missing from vars #191
  • Compiler options used in emitter should be the ones provided in clj_compiler #184
  • clojure.test-clojure.protocol tests should pass #183
  • nil's type should be nil #181
  • try..catch in 'clojerl.protocol':resolve/3 breaks tail recursion #179
  • Reader fails to correctly read some expressions when using io_reader #172
  • Since def is "evaluated" at compile time it can't use surrounding bindings #170
  • opts argument in clojure.core/re-run should comply with original #168
  • Wrong error shown on protocol resolve #165
  • (dotimes [_ 1]) generates an "unbound _" error #161
  • Reader (and clojure.core/read function) should comply to original #160
  • Vars metadata: add :name, :ns, :line and :column information #159
  • Metadata should be analysed and emitted #158
  • Can't use values with metadata as keys because equality doesn't work #148
  • Using 'var' with a private var shows error about it being private #145
  • multi-method: symbol as a dispatch value doesn't get dispatched #144
  • clojure.core/re-matches fails to match string #142
  • Setting the value for a dynamic var doesn't check if there is already a binding #140
  • clj\_util:throw\* should be clj\_utils:error\* in most cases #138
  • Using nil as a value for a dynamic binding doesn't work #135
  • clj_compiler_SUITE is failing #132
  • Multimethods implementation functions accumulate after repeated compilations #128
  • Expressions inside literal tuples are not analyzed #108
  • Conflict with var names, unwanted matching performed #94
  • Macros defined in a namespace can't currently be used in the same ns #70
  • Avoid multiple passes for parse\_def and parse\_fn #66
  • HOF that return anonymous functions not working #65
  • Symbols that get resolved to an erl_fun might actually be vars that have not been defined yet #56
  • Metadata: what happens if you use a symbol with metadata as a key in a map? #39
  • reader: should be able to read one form at a time #13

Closed issues:

  • An error occurred while compiling clojerl #387
  • List available, missing and/or unsupported features #369
  • Try map representation for types instead of tuples #364
  • Build failed #356
  • Remove handling of ratio #353
  • ExceptionInfo, ex-info and ex-data #352
  • Keep on_load expressions when modifying a module #343
  • Build with OTP 20.0 #330
  • ArrayMaps (TupleMaps) missing #327
  • Does Clojerl have emacs plugins? #315
  • Using underscores as argument generates errors if the argument is used #312
  • Fix elvis warnings #300
  • Add .clje as clojure extension for github #297
  • Add License #284
  • Basic introductory documentation #283
  • Improve build #274
  • clojure.instant: printable dates and reader related tests #262
  • Comparable, sort and sort-by #261
  • Erlang alias operator #252
  • clojerl.BitString implementation #243
  • Missing clojure.* namespaces #237
  • Implement receive as a special form #234
  • Implement IReduce for collections where it applies #224
  • Sorted collections #201
  • Finish copying over all of clojure.core #199
  • Define and reuse all/0 and init_per_testcase/1 in clj_test_utils #190
  • Implement clojure.string #177
  • import #174
  • Differences from Clojure #162
  • Add a reader literal #erl to indicate Erlang data types #151
  • clojure.core: regex functions #130
  • Include source for clojure.test and applicable Clojure tests #129
  • deftype and defrecord #124
  • case* #123
  • letfn* #122
  • Review all usages of the process dictionary as a cache!!!! #121
  • Arrays #120
  • Transient collections #119
  • Reduced (reduce, reduced?, etc.) #118
  • Rational numbers #116
  • Chunked seqs #115
  • Guards #113
  • Pattern matching for let*, fn*, case*, catch, receive* and loop* #111
  • Clojure's IO features #105
  • Protocols: defprotocol, extend, extend-protocol, extend-type #102
  • Add line and file information to emitted forms #99
  • use and refer #96
  • Multimethods: defmulti, defmethod #92
  • Fully functional ns macro (:require, :use, :as, etc.) #89
  • Default readers: inst and uuid #84
  • try..catch allow catching all Erlang exception classes #82
  • Analyze and emit var #80
  • try..catch..finally #77
  • loop* & recur #76
  • lazy-seqs (?) #74
  • Define clojure.core/defn- and take into account if a var is private #73
  • Tests for the emitter #68
  • Add test to compile .clj files in the priv folder #67
  • Add file information to errors #62
  • Var: dynamic bindings #61
  • Tuples should implement ISequential #58
  • Simple REPL #57
  • Use line and column information in all errors shown, when possible #54
  • If a var is not in the Env when analyzing try to get it from the module's attribute #53
  • Test all data types #52
  • compiler: provide options such as the output dir and compiler flags #49
  • Declare dummy ISequential behavior to avoid warning #46
  • clojure.core/require #44
  • emitter: let* #43
  • Macros #42
  • analyzer: allow pattern matching wherever there is a binding form #38
  • def: add metadata from name symbol to var #37
  • general: change keyword representation from clojerl.Keyword to plain Erlang atom #32
  • emitter: invoke - figure out how functions and funs can map to defn and fn #30
  • analyzer: loop* #29
  • reader: tuples #[] #23
  • reader: implement reader tags #22
  • README #16
  • analyzer: tests #11
  • analyzer: let* #10
  • analyzer: do #9
  • analyzer: if #8
  • analyzer: check implementation for analyze_seq #7
  • analyzer: fn* #6
  • analyzer: quote #5
  • analyzer: def #3
  • analyzer: add context to env and top\_level to expressions when applicable #2
  • reader: implement missing reader dispatches #1

Merged pull requests:

  • [Closes #437] Define expr type for analyzer #441 (jfacorro)
  • Update Building Instructions #440 (kevgathuku)
  • [Closes #438] Warn when overriding var #439 (jfacorro)
  • [Closes #429] Check binary code in memory before going to the file #434 (jfacorro)
  • [Closes #432] Move clojure.test-helper #433 (jfacorro)
  • [Closes #430] Keep non-processed arguments in a var #431 (jfacorro)
  • [Closes #422] Erlang string fix stringable implementation #428 (jfacorro)
  • [Closes #426] Build list instead of using seq #427 (jfacorro)
  • [Closes #424] Build string and then write #425 (jfacorro)
  • [Closes #422] erlang.String fix IStringable implementation #423 (jfacorro)
  • [Closes #419] Add compiler application in .app #420 (jfacorro)
  • [Closes #417] Use sh instead of bash #418 (jfacorro)
  • [Closes #415] Add replace to clojerl.String #416 (jfacorro)
  • [Closes #413] Don't ensure modules on application start #414 (jfacorro)
  • [Closes #411] Import type during analysis of deftype so that it can be resolved #412 (jfacorro)
  • [Closes #369] List available features #410 (jfacorro)
  • [Closes #407] Include imports and aliases #409 (jfacorro)
  • [#406] Don't delete cerl_evalN module (temp workaround) #408 (jfacorro)
  • [Closes #404] Improve help text for bin/clojerl #405 (jfacorro)
  • [Closes #402] nil should not implement protocols by default #403 (jfacorro)
  • [Closes #400] Use dot syntax in clojure.string #401 (jfacorro)
  • [Closes #393] Erlang implementation of murmur3 #399 (jfacorro)
  • [Closes #392] Run Clojure tests outside CT #398 (jfacorro)
  • [Closes #396] Keep tag for dot syntax #397 (jfacorro)
  • [Closes #394] Keep meta for generated symbols in syntax quote #395 (jfacorro)
  • [Closes #387] Build on windows #391 (jfacorro)
  • [Closes #363] Move internal definitions to internal header file #390 (jfacorro)
  • [Closes #388] Avoid protocol resolution when possible #389 (jfacorro)
  • [Closes #384] Run benchmarks using clojure.main #385 (jfacorro)
  • [Closes #364] Change type representation to use maps #383 (jfacorro)
  • [Closes #381] Propagate type tag when possible #382 (jfacorro)
  • [Closes #378] Remove arbitrary precision functions #379 (jfacorro)
  • [Closes #376] Avoid creating a type when using instance? and satisfies? #377 (jfacorro)
  • [Closes #261] Sort by #375 (jfacorro)
  • [Closes #373] Print a table comparing the results #374 (jfacorro)
  • [Closes #371] Binary compile path #372 (jfacorro)
  • [#366] Move modules around #370 (jfacorro)
  • [Closes #206] Improve apply for var #368 (jfacorro)
  • Update benchmarks results #367 (jfacorro)
  • [Closes #115] Implement chunked seq #365 (jfacorro)
  • clojure.instant: add erlang.util.Date #362 (bensu)
  • fix where/were typo #361 (andrestylianos)
  • [Closes #358] Move unread from IReader to a new IPushbackReader protocol #360 (jfacorro)
  • [Closes #353] Remove ratio parsing in reader #359 (jfacorro)
  • [#237] Port clojure.core.server #357 (jfacorro)
  • Remove erroneous apostrophe #355 (stig)
  • [Closes #352] Exception Info #354 (jfacorro)
  • [#237] Port clojure.pprint #351 (jfacorro)
  • [#349] Dynamic vars that are functions should also check the current binding #350 (jfacorro)
  • [Closes #347] Use return_on in read_until to avoid complex checks #348 (jfacorro)
  • [Closes #345] Force evaluation order when emitting lists #346 (jfacorro)
  • [Closes #343] Keep on_load expressions #344 (jfacorro)
  • [Closes #341] Metadata lost #342 (jfacorro)
  • [Closes #339] Add multimethods.clje tests from original and fix bugs #340 (jfacorro)
  • [Closes #337] Emit functions in defprotocol and don't include callback attributes #338 (jfacorro)
  • [#335] Implement the same behaviour for str for collections as in Clojure #336 (jfacorro)
  • [Closes #327] Tuple maps #334 (jfacorro)
  • [#117] Atoms #333 (jfacorro)
  • [#237] Port clojure.xml #331 (jfacorro)
  • [Closes #162] Add document with differences from Clojure #329 (jfacorro)
  • [Closes #323] Type hints ignored #324 (jfacorro)
  • [Closes #321] Implement clojure.repl/source #322 (jfacorro)
  • [Closes #104 Closes #314] Create a type Namespace #319 (jfacorro)
  • [Closes #305] Compilation tests #318 (jfacorro)
  • [Closes #316] Compile with OTP 20.0-rc2 #317 (jfacorro)
  • [Fixes #312] Introduce lexical renaming for underscore #313 (jfacorro)
  • [#310] Compile to native #311 (jfacorro)
  • [Closes #308] Process time and verbose options in compile script #309 (jfacorro)
  • [Closes #304] Don't add on_load function when there are no expressions #307 (jfacorro)
  • [Fixes #289] REPL error beam not found #306 (jfacorro)
  • [Fixes #302] Add correct path #303 (jfacorro)
  • [Fix #300] Fix elvis warnings #301 (jfacorro)
  • [Closes #296] Replace "form(s)" for "module(s)" #299 (jfacorro)
  • [#297] Add .gitattributes with clje extension as Clojure #298 (jfacorro)
  • [Fixes #293] Missing location info #294 (jfacorro)
  • [Closes #286] Full path for files #292 (jfacorro)
  • [Closes #283] Basic documentation #290 (jfacorro)
  • [Fixes #287] Handle dashes correctly #288 (jfacorro)
  • [Closes #284] Add EPL v1.0 license same as Clojure #285 (jfacorro)
  • [Closes #232] Rename clj_core to clj_rt #282 (jfacorro)
  • [Closes #26] travis-ci badge #281 (jfacorro)
  • [Closes #26] travis-ci integration #280 (jfacorro)
  • [Closes #271] Change extension from .clj to .clje #279 (jfacorro)
  • [Fix #277] Add end_per_suite/1 where missing #278 (jfacorro)
  • [#274] Fix build #276 (jfacorro)
  • [#274] Improve compile escript and Makefile targets #275 (jfacorro)
  • [Closes #242] Avoid arglists as erlang list #273 (jfacorro)
  • [Closes #266] Make dialyzer happy #272 (jfacorro)
  • [Closes #264] Make clojerl directory sticky but still manage to bootstrap #270 (jfacorro)
  • [Closes #268] Printable Erlang lists as #erl"..." #269 (jfacorro)
  • [Closes #265] Move files around #267 (jfacorro)
  • [Closes #245] Remove references to java in docstrings and code #263 (jfacorro)
  • [Closes #259] Avoid generating too many symbols with gensym #260 (jfacorro)
  • [Closes #257] Check symbol ns special form #258 (jfacorro)
  • [Closes #243] Complete bistring implementation #256 (jfacorro)
  • [Closes #252] Add alias for patterns #255 (jfacorro)
  • [Closes #253] Migrate to rebar3 #254 (jfacorro)
  • [Closes #111] Pattern matching #251 (jfacorro)
  • [Closes #246] lazy-seq printing #247 (jfacorro)
  • [#243] Simple and incomplete implementation for BitString #244 (jfacorro)
  • [Closes #233] Make state or env last arg #241 (jfacorro)
  • [Fixes #239] Print unreadable form for non-printable strings #240 (jfacorro)
  • [#237] Add clojure.data and its tests #238 (jfacorro)
  • [Closes #234] receive #236 (jfacorro)
  • [Closes #113] Guards #235 (jfacorro)
  • [Closes #151] erl literals #231 (jfacorro)
  • [Closes #190] Make all suites use the same logic for all/0 and init_per_suite/1 #230 (jfacorro)
  • [Closes #228] Rename anno to ann #229 (jfacorro)
  • [Closes #171] Compile time eval init exprs #227 (jfacorro)
  • [Closes #218] Analyze metadata from vars #226 (jfacorro)
  • [Closes #224] Implement IReduce #225 (jfacorro)
  • [Closes #222] Renamed clojerl.protocol to clj_protocol #223 (jfacorro)
  • [Closes #220] Rename *warn-on-type-resolution* and change the message #221 (jfacorro)
  • [Closes #185] Allow 'default' symbol as a type in extend-type #219 (jfacorro)
  • [Closes #183] Protocols test should pass #217 (jfacorro)
  • [Closes #181] Use nil literal as nil's type #216 (jfacorro)
  • [Closes #214] Get var from symbol #215 (jfacorro)
  • [Closes #212] Fix failing tests #213 (jfacorro)
  • [Closes #122] letfn* #211 (jfacorro)
  • [#122] Emit Core Erlang instead of Abstract Syntax Forms #210 (jfacorro)
  • [Closes #201] Sorted collections #209 (jfacorro)
  • [Closes #195] Splice block when possible #208 (jfacorro)
  • [Closes #206] Rename invoke to apply in clojerl.IFn #207 (jfacorro)
  • [Closes #204] Add benchmark target #205 (jfacorro)
  • [#202] Reduce runtime overhead #203 (jfacorro)
  • [Closes #199] All of clojure.core is copied over from the original #200 (jfacorro)
  • [Closes #184] Add compiler options to env #198 (jfacorro)
  • [Closes #138] Replace calls to clj_utils:throw* for clj_utils:error* #197 (jfacorro)
  • [Closes #172] Reader bugs when using io-reader #196 (jfacorro)
  • [Closes #93] Call clj_core:boolean/1 in case to simplify emitted expression #193 (jfacorro)
  • [Closes #191] Location information missing #192 (jfacorro)
  • [Closes #188] Run clojure tests script #189 (jfacorro)
  • [Close #161] Handle _ as a binding symbol #187 (jfacorro)
  • [Closes #160] Fix clojure.core/read #186 (jfacorro)
  • [Closes #175] Remove already compiled modules #182 (jfacorro)
  • [Closes #102] defprotocol #180 (jfacorro)
  • [#177] clojure.string #178 (jfacorro)
  • [Closes #174] import #176 (jfacorro)
  • [#124] deftype and defrecord #173 (jfacorro)
  • [Close #159] Add missing metadata to vars #169 (jfacorro)
  • [Fixes #158] Metadata analyzed and emitted #167 (jfacorro)
  • [Fixes #165] Check if the protocol function doesn't exist #166 (jfacorro)
  • [Closes #163] Remove protocol prefix #164 (jfacorro)
  • [Closes #84] Implement inst and uuid default readers #157 (jfacorro)
  • [Closes #129] Add clojure.test and all necessary namespaces #155 (jfacorro)
  • [Closes #105] IO feature #154 (jfacorro)
  • [Closes #148] Metadata ruins comparison #152 (jfacorro)
  • [Closes #149] Simple benchmarks #150 (jfacorro)
  • [Fixes #144] Strip meta of dispatch value when registering and when dispatching #147 (jfacorro)
  • [Fixes #145] Don't check if var is private when resolving for 'var' #146 (jfacorro)
  • [Fix #142] Handle the case where a string is returned from re-find #143 (jfacorro)
  • [Fixes #140] Add update function in scope that only modifies existing key #141 (jfacorro)
  • [Closes #82] Use _ to catch all classes of exceptions #137 (jfacorro)
  • [Fixes #135] Store value in dynamic bindings as an {ok, Value} tuple #136 (jfacorro)
  • [Fixes #128] Add dispatch value as the suffix #134 (jfacorro)
  • [Fixes #132] Fixed bugs #133 (jfacorro)
  • [Closes #130] Regex functions #131 (jfacorro)
  • [Closes #73] Private defn #127 (jfacorro)
  • [Closes #123] case #126 (jfacorro)
  • [Closes #92] Multimethods #125 (jfacorro)
  • [Closes #99] File and line information in emitted forms #112 (jfacorro)
  • [Closes #38] Allow pattern matching or destructuring #110 (jfacorro)
  • [Closes #108] Wrong analysis on tuples #109 (jfacorro)
  • [Closes #89] fully functional ns macro #107 (jfacorro)
  • [#89] Fully functional ns macro namespaces ets #106 (jfacorro)
  • [Closes #64] Removed erl_fun reader dispatch #103 (jfacorro)
  • [Closes #62] File info in errors #101 (jfacorro)
  • [Closes #61] Keep dynamic bindings in the process dictionary #100 (jfacorro)
  • [#57] Simple naive REPL #98 (jfacorro)
  • [Closes #91] Remove usage of erl syntax #97 (jfacorro)
  • [Closes #74] Lazy seq #95 (jfacorro)
  • [#86] Avoid multiple compilation by faking fns #88 (jfacorro)
  • [Closes #44] Require #87 (jfacorro)
  • [Closes #58] Tuple should implement ISequential, Counted and Seqable #85 (jfacorro)
  • [Closes #22] Read tagged literals #83 (jfacorro)
  • [Closes #80] Analyze and emit var #81 (jfacorro)
  • [Closes #77] try..catch..finally #79 (jfacorro)
  • [Closes #76] Parse recur. Emit loop and recur. #78 (jfacorro)
  • [#70] Macros can't be used in the same ns #75 (jfacorro)
  • [Closes #40] Replace symbols for strings in Var's internal representation #72 (jfacorro)
  • [Closes #65] HOF returning fn not working #71 (jfacorro)
  • [Closes #56] [Closes #66] #69 (jfacorro)
  • [Closes #54] Show line and column information in all errors warnings #63 (jfacorro)
  • [Closes #53] Look var in module info (also improved compilation process) #60 (jfacorro)
  • [Closes #52] Test all data types #59 (jfacorro)
  • [Closes #15] Keep track of line col info while reading #55 (jfacorro)
  • [Closes #43] emitter: let #51 (jfacorro)
  • [Closes #49] Provide options to compiler #50 (jfacorro)
  • [Closes #46] Create dummy ISequential protocol #48 (jfacorro)
  • [Closes #42] Remove ISeq implementation Map, Set and Vector #47 (jfacorro)
  • [#37] def: add meta from symbol #45 (jfacorro)
  • [Closes #30] Emitter invoke and fn #41 (jfacorro)
  • [Closes #32] Keywords as atoms #36 (jfacorro)
  • [Closes #23] Add a reader dispatch for tuples #[] #34 (jfacorro)
  • [Closes #24] Change protocol impl resolution #33 (jfacorro)
  • [Closes #10 Closes #29] Analyze let & loop #28 (jfacorro)
  • [Closes #8] Analyze if expressions #27 (jfacorro)
  • [Closes #6] Analyzer: parse fn* [Closes #9] parse do #25 (jfacorro)
  • [Closes #16] README with some information #21 (jfacorro)
  • [Closes #1] Missing reader dispatches #20 (jfacorro)
  • [Closes #13] Added read_fold function #18 (jfacorro)
  • [Closes #5] analyzer: parse quote #17 (jfacorro)
  • [Closes #11] analyzer tests #14 (jfacorro)
  • [Closes #2] Add context and top level attr #12 (jfacorro)
  • [#3] Analyer def #4 (jfacorro)