Squint: Light-weight ClojureScript dialect
- #458: don't emit
null
in statement position
- #455: don't export non-public vars
- Fix infix operator in return position
- Allow playground to use JSX in non-REPL mode
- Add transducer arity to all existing core functions
- Support
^:gen
+js-yield
+js-yield*
to write JS generator functions. See playground - Add
update-keys
andupdate-vals
- Add
=
as reified function
- #449: fix issue with
:refer
- Add
memoize
,filter
transducer arity,peek
,pop
- Export classes defined with
defclass
- Support
^:async
Object method indefclass
- Better support for pragmas and JSDoc via
js*
+//
and/* */
- Add
rem
,nnext
,str/end-with?
,str/index-of
andstr/last-index-of
- Fix alias with hypen in REPL mode
- Keep top level strings and comments (via
js*
) before imports (for JSDoc, Next.js"use client"
, etc)
- Fix
compileString
in JS API
- Optimization: sort largest set first for
set/union
, and smallest first forset/intersection
- Add
sorted-set
,long
,abs
,keep-indexed
transducer arity
- The
children
function intree-seq
may returnnil
- Add
clojure.set/join
- Add
tree-seq
,flatten
,seq?
andsequential?
- Add
clojure.set
functionsselect
,rename-keys
,rename
,project
, andmap-invert
(@PEZ) - Fix
reduce-kv
withjs/Map
input
- Add more
clojure.set
functions:difference
,union
,subset?
, andsuperset?
(@PEZ)
- Let any object that has
Symbol.iterable
be destructureable even if it is notinstance of Object
- Initial version of
clojure.set
- #418: Add
reductions
- Add
bit-shift-left
and morebit-
related macros - Fix
not
with respect to truthiness - Fix
reduce
without initial value + empty coll, it should callf()
- Add serve-playground bb task
- Update playground with button for creating a blank AOC playground
- #407: fix conditional rendering
- Add
not-empty
- Fix
into
+ set + xform
- More helpful error from JS when using unresolved symbol in REPL mode
- Allow
>
,<
etc to be used as HOFs - Fix
str/split
with respect to trailing empty split elements
- Fix vararg functions in REPL mode
- #394: add
int
- #393:
Math
can be used withoutjs/
prefix - Expose compiler state via
compileStringEx
for playground, preserves namespace transitions
- Restore backward compatibility with code that is compiled with older versions of squint
- Optimize various outputs for smaller size
- Add
js-in
- Support
into
+xform
- Support
sort
on strings
- #386: allow expression in value position in map literal
- Improvements with respect to laziness in
mapcat
andconcat
- Do not array mutate argument in
reverse
- Escape JSX attribute vector value (and more)
map
+transduce
support- Fix
for
in REPL mode - Throw when object is not iterable in
for
- Make next lazy when input is lazy
- Fix playground shim (fixes issue in older versions of Safari)
- Add
js-mod
andquot
- #380: Don't emit space in between
#jsx
tags - Add
re-find
- Add
condp
macro
- Use
compare
as default compare function insort
(which fixes numerical sorting)
- Allow
assoc!
to be called on arbitrary classes (regression)
- Improve
get
to callget
method when present.
- False alarm, I was playing the pinball game in low power mode on my mobile 🤦
- Revert truthiness checks via funcall, negative impact on performance with pinball game on mobile
- Allow keywords and collections to be used as functions in HOFs
- Make filter, etc aware of truthiness
- Reduce code size for truthiness checks
- Add
str/split-lines
- Add
partition-by
- Add
parse-long
- Add
sort-by
- Fix top level await
- Support multiple dimensions in
aset
- Add
coercive-=
as alias for==
- Add
js-delete
- Fix
min-key
andmax-key
and improve tests
- Add
min-key
andmax-key
- Fix
defonce
in REPL-mode
- Fix
doseq
andfor
when binding name clashes with core var
- No-op release to hopefully fix caching issue with jspm
- Several REPL improvements
- Improve https://squint-cljs.github.io/squint/
- Allow alias name to be used as object in REPL mode
- Copy resources when using
squint compile
orsquint watch
- Return map when
select-keys
is called withnil
- nREPL server: print values through
cljs.pprint
(@PEZ)
- Initial (incomplete!) nREPL server on Node.js:
npx squint nrepl-server :port 1888
- Update/refactor threejs example
- #360:
assoc-in!
should not mutate objects in the middle if they already exist - Evaluate
lazy-seq
body just once - Avoid stackoverflow with
min
andmax
- #360: fix assoc-in! with immutable objects in the middle
- Add
mod
,object?
- Optimize
get
- Add threejs example
- #357: fix version in help text
- Fix iterating over objects
- Add
clojure.string
'striml
,trimr
,replace
- Fix
examples/vite-react
by addingpublic/index.html
- Add
find
,bounded-count
,boolean?
,merge-with
,meta
,with-meta
,int?
,ex-message
,ex-cause
,ex-info
- Fix munging of reserved symbols in function arguments
- #347: Add
:pre
and:post
support infn
- Add
number?
- Support
docstring
indef
- Handle multipe source
:paths
in a more robust fashion
- #344: macros can't be used via aliases
- Add
squint.edn
support, see docs - Add
watch
subcommand to watch:paths
fromsquint.edn
- Make generated
let
variable names in JS more deterministic, which helps hot reloading in React - Added a vite + react example project.
- Resolve symbolic namespaces
(:require [foo.bar])
from:paths
- Add
bit-and
andbit-or
- Include
lib/squint.core.umd.js
which defines a globalsquint.core
object (easy to use in browsers, see docs)
- Add
subs
,fn?
,re-seq
- Add
squint.edn
with:paths
to resolve macros from (via:require-macros
)
- Fix
and
andor
with respect to CLJS truthiness
- Respect CLJS truth semantics: only
null
,undefined
andfalse
are non-truthy,0
and""
are truthy. - Fix
dotimes
squint repl
improvements
- Do not resolve binding in
catch
to core var - Fix reading
.cljc
files - Allow passing JS object as opts in JavaScript API's
compileString
- Fix
instance?
in return position to-array
,str/starts-with?
- Support next on non-arrays
- Add
compare
- Fix
into-array
- Add
into-array
,some-fn
,keep-indexed
- Fix for
lazy-seq
when body returnsnil
- Add
max
,min
,every-pred
- Add
reduce-kv
- #320: fix overriding core vars
- Add
rand-nth
,aclone
,add-watch
,remove-watch
- #288: support
defclass
. See doc/defclass.md. - #312: implement doall and dorun
- Drop cherry core from NPM package (cruft from porting cherry to squint)
- Fix compilation of empty list
- Fix
and
andor
without arguments - #308:
doseq
in return position emits invalid code
- Add
js-obj
- Add
for
anddoseq
(@lilactown)
- #289: support
:as
alias with hyphen in namespace require libspec
- #286: make dissoc work with multiple keys
- #284: fix undefined keys/values when passing objects and maps to conj
- #274: fix logic precedence by wrapping in parens
Add preliminary Node.js API in node.js
- Support
{:& more :foo :bar}
syntax in JSX to spread the more map into the props, inspired by helix
- Add
zero?
pos?
andneg?
core functions
- Fix
boolean
core function export
- Escape boolean in JSX attribute
- Add
boolean
core function
- Fix
+
symbol import by bumping shadow-cljs - Move
@babel/preset-react
dependency to dev dependency
- Fix async/await + variadiac arguments
- Fix namespaced component in JSX
- Change default extension back to
.mjs
. Use--extension js
to change this to.js
.
- Fix rendering of number attributes in JSX
- Support
--extension
option to set extension for JS files - Change default extension from
.mjs
to.js