-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Include changes from clojure-1.9.0 #793
Labels
Comments
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 22, 2021
jfacorro
added a commit
that referenced
this issue
May 23, 2021
jfacorro
added a commit
that referenced
this issue
May 23, 2021
jfacorro
added a commit
that referenced
this issue
May 23, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
May 29, 2021
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
With the introduction of JIT compilation in OTP 24 there is less need to use native compilation.
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
jfacorro
added a commit
that referenced
this issue
Aug 25, 2021
…re-1.9.0 [#793] include spec.alpha for clojure 1.9.0
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
Since we are removing the deps from all deps to avoid a cyclic dependency with `clojerl` we need to explicitly add `test.check` which is a required dep for `spec.alpha`.
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
Since we are removing the deps from all deps to avoid a cyclic dependency with `clojerl` we need to explicitly add `test.check` which is a required dep for `spec.alpha`.
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
This is to confirm that there are no issues when compiling with the default profile
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
Since we are removing the deps from all deps to avoid a cyclic dependency with `clojerl` we need to explicitly add `test.check` which is a required dep for `spec.alpha`.
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
This is to confirm that there are no issues when compiling with the default profile
jfacorro
added a commit
that referenced
this issue
Aug 27, 2021
[#793] Include test.check explicitly
jfacorro
added a commit
that referenced
this issue
Sep 8, 2021
jfacorro
added a commit
that referenced
this issue
Sep 8, 2021
jfacorro
added a commit
that referenced
this issue
Sep 8, 2021
jfacorro
added a commit
that referenced
this issue
Sep 8, 2021
jfacorro
added a commit
that referenced
this issue
Sep 9, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 11, 2021
jfacorro
added a commit
that referenced
this issue
Sep 12, 2021
[#793] clojure 1.9.0 reader resolver
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Go over the changelog for Clojure 1.9.0 and apply them to Clojerl.
Review the code changes by checking out tag
clojure-1.9.0
and then runninggit dif clojure-1.8.0
.Reference:
Changes to Clojure in Version 1.9
There is no representation for Inf, -Inf or NaN in the BEAM that would play nicely with the available number types.
There are no classes in the BEAM.
slurp
- mark return type as String 🟩clojure.core/delay
- improve performance 🟥Delay has a completely different implementation in Clojerl, therefore the performance improvement does not apply.
There is an implementation of StringSeq but there is no
InternalReduce
protocol in Clojerl (or any of the logic aroundCollReduce
either). This is because most of that implementation relies on the hierachy of classes in the JVM. The alternative chosen in Clojerl is to implement theclojerl.IReduce
protocol for the collections and seqs that would be included in the original Clojure logic. Following this reasoning,clojerl.StringSeq
does not implementIReduce
so we should probably add that.amap
- should call alength only once 🟥There are no arrays in the BEAM.
This cache is implemented using
unsynchronized-mutable
in Clojure JVM. There is no way to cache values in this way on the BEAM. There are ways (e.g. calculate the hash when the record is created or updated) but none of them are robust enough and/or the trade-off seem worthy.min-key
andmax-key
- evaluate k on each arg at most once 🟩There is no
java.io.Serializable
equivalent on the BEAM.into
now has a 0-arity (returns[]
) and 1-arity (returns the coll that's passed) 🟩After checking the linked issue, this does not seem to cause any issues (tried with OTP 24), it could be because the BEAM compiler includes a pass to remove unusued locals, and therefore there is no lingering reference to the lazy seq head. We could confirm this by compiling the expression in the issue (i.e.
(loop [[a & b] c] [a b])
) and check the assembler BEAM code generated for it by providing the--to-asm
tobin/clj
orbin/clojure
.clojure.repl/dir-fn
now works on namespace aliases 🟩There is only one change in this section which is related serialization of proxy classes, neither of which are available in this implementation.
clojure.core/Throwable->map
formerly returnedStackTraceElement
s which were later handled by the printer. Now the StackTraceElements are converted to data such that the return value is pure Clojure data, as intended. 🟥There is no Throwable class in the BEAM, any value can be use in a throw expression. However Clojerl defines the
IError
protocol which it uses to provide user defined errors and more Clojuresque error handling. This is whyThrowable->map
was renamed toIError->map
.clojure.lang.APersistentVector#hashCode
is not thread-safe 🟥There are no threads on the BEAM, every value is immutable and each process keeps its state (note: this does not mean that there can't be race conditions between processes though).
JVM specific.
JVM specific.
range
realization 🟥See comment for CLJ-2091 above.
IPersistentVector.length()
- implement missing method 🟥This is related to
gvec
's implementation which is used invector-of
which is not supported in Clojerl.defmulti
removes metadata on the var 🟩bean
- iterator was broken 🟥JVM specific.
JVM specific.
JVM specific.
JVM specific.
vector-of
- fix NullPointerException if given unrecognized type 🟥vector-of
not supported in Clojerl.clojure.java.javadoc/javadoc
- update doc urls 🟥JVM specific.
Numbers.divide(Object, Object)
- add checks for NaN 🟥There is no NaN on the BEAM.
doc
- does not expand special cases properly (try, catch) 🟩It never did on Clojerl.
contains?
,get
, andfind
broken for transient collections 🟥No support for transient collections in Clojerl.
The text was updated successfully, but these errors were encountered: