Releases: candid82/joker
Releases · candid82/joker
v0.9.1
General improvements
- added new functions to standard library:
joker.os/stat
,joker.html/escape
,joker.html/unescape
,joker.html/start-file-server
Linter improvements
- Joker will now execute the following files (if they exist) before linting the file:
.jokerd/linter.cljc
(for both Clojure and ClojureScript),.jokerd/linter.clj
(Clojure only),.jokerd/linter.cljs
(ClojureScript only). The rules for locating.jokerd
directory are the same as for locating.joker
file. See #50 for details. - Joker will now warn on duplicate var definition
v0.9.0
v0.8.9
General improvements
- added
swap-vals!
andreset-vals!
functions (from Clojure 1.9) - added new functions to standard library:
joker.http/send
,joker.os/mkdir
,joker.os/cwd
,joker.os/ls
,joker.base64/encode-string
,joker.math/sin
,joker.math/cos
,joker.math/hypot
,joker.math/pi
(a var). - made ExInfo (return by
ex-info
) a map with:message
,:cause
, and:data
keys.
v0.8.8
General improvements
- added
joker.core/pprint
function (very basic pretty printing) - added new command line parameter:
-e <expression>
will execute provided expression and exit - added new command line parameter:
--hashmap-threshold <number>
. Tells Joker the maximum number of slots in array map. A slot is used for either key or value. If there is more keys and values than provided number (defaults to 16), persistent hashmap will be used instead. Negative value means "no limit", so Joker will always use array maps. This parameter is useful when Joker is used to pretty print EDN data structures: setting it to negative value allows prevents Joker from using persistent hashmaps (which don't preserve keys order) and forces it to use array maps instead (which do preserve keys order). For example, the following command can be used to pretty print EDN data structure (read fromstdin
):
joker --hashmap-threshold -1 -e "(pprint (read))"
Linter improvements
- added new rule
:no-forms-threading
to.joker
file. Iffalse
, Joker won't issue a warning on threading macros with no forms (i.e.(-> a)
). Defaults totrue
. See #36 for details. - removed Joker specific core functions when linting in Clojure(Script) (#33)
- stacktraces are not printed in linter mode anymore (#41)
Fixes
case
expressions are now implicitly quoted (#40)
v0.8.7
General improvements
- added joker.yaml namespace to standard library: https://candid82.github.io/joker/joker.yaml.html
Linter improvements
v0.8.6
General improvements
- Joker doesn't require itself to build its own source code anymore
- implemented map namespace syntax (#29)
Linter improvements
- fixed false positives when destructuring maps with namespaced keywords in ClojureScript
- added warning on unused private macro
- added warning on calling
=
,==
,<
and similar functions with only one argument
Fixes
- fixed reading unicode characters (#27)
v0.8.5
Linter improvements
- handle
:refer-macros
properly #23 - demote "No namespace found" error to warning #21
- don't panic on duplicate alias
- understand
.
call - allow callable namespaces in ClojureScript code #11
- implement
:known-namespaces
option in.joker
file. It allows to avoid false positives in some edge cases. See #21 for details. Example:
{:known-namespaces [clojure.spec.gen.test]}
- improve arity checks for functions from standard library
- warn on wrong arity for keyword calls
- implement
:known-tags
option in.joker
file. See #24 for details. Example:
{:known-tags [db/fn]}
-
implement better support for
defrecord
,deftype
,defmethod
,defprotocol
,extend-type
,reify
,extend-protocol
-
fix false positives on
BigDecimal
-
fix false positives on symbols with
$
v0.8.4
General improvements
- implemented splicing reader conditionals
Linter improvements
- Joker now understands
alias
andcreate-ns
and won't complain about symbols or keywords in aliased or created namespaces. See #21 for more details. - Joker now allows to specify symbols that are introduced by a macro in
.joker
file:
{:known-macros [[riemann.streams/where [service event]]]}
So each element in :known-macros vector can now be either a symbol (as before) or a vector with two elements: macro's name and a list of symbols introduced by this macro. See #20 for the discussion that led to this feature.
- fixed false positive on
new
call
Fixes
- division by zero doesn't crash Joker anymore
- fixed loading
.joker
file on windows
v0.8.3
General improvements
- updated to the latest version of readline. This, in particular, allows to build Joker for Solaris.
- new
joker.core/joker-version
function - new
joker.core/*joker-version*
var - new
joker.json/write-string
function - new
joker.time
standard namespace, currently with only one functionjoker.time/sleep
Linter improvements
- fixed false positive on
array
call in ClojureScript (#18) - warning on re-declaration of core vars
Fixes
- fixed
str
for string, regex and chars
v0.8.2
Linter improvements
- Joker can now infer types in trivial cases and warn on argument type mismatch for a subset of core functions. For example, this code
(map [1 2] inc)
will result in a warning:
Parse warning: arg[1] of #'joker.core/map must have type Seqable, got Fn
Fixes
- fixed reading unicode characters
- fixed the crash when reading blank keyword '(:)'
joker.os/sh
result now includes correct:success
value (was alwaystrue
before, now will befalse
if the process exits with non-zero code)