diff --git a/sci b/sci index 52ed6f4f..4faa5490 160000 --- a/sci +++ b/sci @@ -1 +1 @@ -Subproject commit 52ed6f4f9885d3a28b007ccf2e116d8270f35f4b +Subproject commit 4faa54908377fbcabe6bb093eda6c66f8a637e3a diff --git a/src/babashka/impl/clojure/core.clj b/src/babashka/impl/clojure/core.clj index 2f32719e..83027fd7 100644 --- a/src/babashka/impl/clojure/core.clj +++ b/src/babashka/impl/clojure/core.clj @@ -6,39 +6,26 @@ [_ _ & body] `(~'future-call (fn [] ~@body))) -(def core-bindings - {'atom atom - 'swap! swap! - 'swap-vals! swap-vals! - 'reset! reset! - 'add-watch add-watch - 'future-call future-call +(def core-extras + {'future-call future-call 'future (with-meta future {:sci/macro true}) 'future-cancel future-cancel 'future-cancelled? future-cancelled? 'future-done? future-done? 'future? future? - 'deref deref 'agent agent 'send send 'send-off send-off 'promise promise 'deliver deliver 'shutdown-agents shutdown-agents - 'run! run! 'slurp slurp 'spit spit 'pmap pmap 'pr pr - 'pr-str pr-str 'prn prn - 'prn-str prn-str - 'print-str print-str 'print print 'println println 'println-str println-str 'flush flush - 'ex-info ex-info - 'ex-data ex-data - 'read-line read-line - 'namespace namespace}) + 'read-line read-line}) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 5581f83e..62cce3c9 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -6,7 +6,7 @@ [babashka.impl.System :refer [system-bindings]] [babashka.impl.Thread :refer [thread-bindings]] [babashka.impl.async :refer [async-namespace]] - [babashka.impl.clojure.core :refer [core-bindings]] + [babashka.impl.clojure.core :refer [core-extras]] [babashka.impl.clojure.java.io :refer [io-namespace]] [babashka.impl.clojure.stacktrace :refer [print-stack-trace]] [babashka.impl.conch :refer [conch-namespace]] @@ -143,8 +143,7 @@ Everything after that is bound to *command-line-args*.")) (throw (Exception. (str "File does not exist: " file)))))) (def bindings - (merge core-bindings - system-bindings + (merge system-bindings file-bindings thread-bindings integer-bindings @@ -198,7 +197,8 @@ Everything after that is bound to *command-line-args*.")) io clojure.java.io conch me.raynes.conch.low-level async clojure.core.async} - :namespaces {'clojure.tools.cli tools-cli-namespace + :namespaces {'clojure.core core-extras + 'clojure.tools.cli tools-cli-namespace 'clojure.edn {'read-string edn/read-string} 'clojure.java.shell {'sh shell/sh} 'babashka.wait {'wait-for-port wait/wait-for-port