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:
- [#764] Remove pre-hook #765 (jfacorro)
- [#762] REPL from Erlang shell outputs extra characters #763 (jfacorro)
- [#759] Erlang and Clojure encoders #761 (jfacorro)
- [#758] Starting REPL from shell fails #760 (jfacorro)
- [#753] Compile with OTP 23 #757 (jfacorro)
- [#755] Don't parse :size as a pattern #756 (jfacorro)
- [#752] Improve error reporting for erl-binary* #754 (jfacorro)
- [#749] Provide stacktrace to throw #751 (jfacorro)
- [#749] Include original stacktrace when throwing error #750 (jfacorro)
- [#747] Set the io-reader option when calling clj_edn/read #748 (jfacorro)
- [#745] Munge namespace name for multimethod's map #746 (jfacorro)
- Improve README #743 (jfacorro)
- [#741] Use pattern matching in case #742 (jfacorro)
- [#248] reducers benchmarks #740 (jfacorro)
- [#738] Improve performance of clojure.core/last #739 (jfacorro)
- [#248] Implement clojerl.Subvec and clojerl.Vector.Seq #737 (jfacorro)
- [#284] Rename the callback functions for marker protocols and remove their implementations #736 (jfacorro)
- [#248] Reducers #735 (jfacorro)
- [#732] Fix bug when checking for overriden vars #733 (jfacorro)
- [#730] Add option to compile to BEAM assembly #731 (jfacorro)
- [#728] Return top level supervisor pid #729 (jfacorro)
0.6.0 (2020-03-22)
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:
- Prepare release 0.6.0 #727 (jfacorro)
- [#310] Native code compilation #722 (jfacorro)
- [#720] Record ops performance #721 (jfacorro)
- [#718] Fix implementation and update tests for clojerl.Var:has_root/1 #719 (jfacorro)
- [#716] Improve multimethod performance #717 (jfacorro)
- [#714] Improve map get performance #715 (jfacorro)
- [#711] Stack shows wrong location for error #713 (jfacorro)
- [#706] Report location of error during macroexpansion #712 (jfacorro)
- Add Dockerfile and publish the official Docker image #710 (abhi18av)
- [#707] Google group and working link to Slack #709 (jfacorro)
- [#707] Include link to slack channel #708 (jfacorro)
- [#704] Remove clj_module:remove/1, monitor compiling process and cleanup when it dies #705 (jfacorro)
- [#702] Fix hash implementation for sets #703 (jfacorro)
- [#681] Clojerl API #701 (jfacorro)
- [#699] Create clje.user on init #700 (jfacorro)
- [#697] Always resolve in-ns and ns #698 (jfacorro)
- [#694] Output .core file to the same dir as specified for .beam #695 (jfacorro)
- [#684] Use name of shadowed local in pattern matching #693 (jfacorro)
- [#691] Remove printed messages #692 (jfacorro)
- Use var specific str function #690 (jfacorro)
- [#117] Agents #688 (jfacorro)
- [#684] Bound value not used in pattern matching #685 (jfacorro)
- [#682] Remove IReduce implementation from clojerl.Cons #683 (jfacorro)
- [#679] Emit a remote call to the var when the arity used does not exist #680 (jfacorro)
- [#677] Generate cover reports #678 (jfacorro)
- [#670] Fix handling of compare functions #676 (jfacorro)
- [#90] delay future promise #675 (jfacorro)
- [#673] Add issue templates #674 (jfacorro)
- [#661] Erlang behaviour tests #669 (jfacorro)
- [#667] Make clojerl.org link more visible in README #668 (jfacorro)
- Bump OTP version to 22.1 #666 (robertoaloi)
- [Closes #661] behaviours #665 (jfacorro)
- [Closes #663] Specify trusty #664 (jfacorro)
0.5.1 (2019-07-28)
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:
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:
- [Closes #659] Reset gensym id in top level reader functions just before reading forms #660 (jfacorro)
- [#406] core erlang interpreter #658 (jfacorro)
- [Closes #656] use pre provider hook #657 (jfacorro)
- [#652] Hex badge link #655 (jfacorro)
- [#652] Useful links in clojerl.app.src #654 (jfacorro)
- [#652] Modify clojerl.app.src to be able to publish to package #653 (jfacorro)
- [Closes #325] Map namespace syntax #650 (jfacorro)
- [Closes #648] StringSeq #649 (jfacorro)
- Update rebar3_clojerl plugin #647 (jfacorro)
0.5.0 (2019-06-16)
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)
Fixed bugs:
- Memory leak when using clj_rt:print/1 #579
Merged pull requests:
0.4.0 (2018-11-10)
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:
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)
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)
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 in
catch
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)
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 andtop\_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)
- This Changelog was automatically generated by github_changelog_generator