Compare commits

...

7 commits

Author SHA1 Message Date
Michiel Borkent
f8672d83f2 hmm [skip ci] 2022-12-26 13:35:13 +01:00
Michiel Borkent
4bb2a75a0b require detection 2022-12-26 13:09:56 +01:00
Michiel Borkent
568b8923ee instaparse [skip ci] 2022-12-26 12:52:07 +01:00
Michiel Borkent
57436a9977 better require logging 2022-12-26 12:39:00 +01:00
Michiel Borkent
988135dac0 instaparse [skip ci] 2022-12-26 12:06:53 +01:00
Michiel Borkent
596c684438 wip [skip ci] 2022-03-15 11:05:17 +01:00
Michiel Borkent
5f783e4d88 instaparse 2022-03-15 10:08:09 +01:00
6 changed files with 82 additions and 29 deletions

View file

@ -48,6 +48,7 @@
com.taoensso/timbre {:mvn/version "6.0.1"} com.taoensso/timbre {:mvn/version "6.0.1"}
org.clojure/tools.logging {:mvn/version "1.1.0"} org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"} org.clojure/data.priority-map {:mvn/version "1.1.0"}
instaparse/instaparse {:mvn/version "1.4.10"}
insn/insn {:mvn/version "0.5.2"} insn/insn {:mvn/version "0.5.2"}
org.clojure/core.rrb-vector {:mvn/version "0.1.2"} org.clojure/core.rrb-vector {:mvn/version "0.1.2"}
org.babashka/cli {:mvn/version "0.6.41"}} org.babashka/cli {:mvn/version "0.6.41"}}

View file

@ -30,6 +30,8 @@
[org.clojure/core.async "1.6.673"] [org.clojure/core.async "1.6.673"]
[org.clojure/test.check "1.1.1"] [org.clojure/test.check "1.1.1"]
[com.github.clj-easy/graal-build-time "0.1.0"] [com.github.clj-easy/graal-build-time "0.1.0"]
[rewrite-clj/rewrite-clj "1.0.699-alpha"]
[instaparse/instaparse "1.4.10"]
[rewrite-clj/rewrite-clj "1.1.45"] [rewrite-clj/rewrite-clj "1.1.45"]
[insn/insn "0.5.2"] [insn/insn "0.5.2"]
[org.babashka/cli "0.6.41"]] [org.babashka/cli "0.6.41"]]
@ -68,7 +70,7 @@
:feature/selmer {:source-paths ["feature-selmer"] :feature/selmer {:source-paths ["feature-selmer"]
:dependencies [[selmer/selmer "1.12.50"]]} :dependencies [[selmer/selmer "1.12.50"]]}
:feature/logging {:source-paths ["feature-logging"] :feature/logging {:source-paths ["feature-logging"]
:dependencies [[com.taoensso/timbre "6.0.1"] :dependencies [[com.taoensso/timbre "6.0.4"]
[org.clojure/tools.logging "1.1.0"]]} [org.clojure/tools.logging "1.1.0"]]}
:feature/priority-map {:source-paths ["feature-priority-map"] :feature/priority-map {:source-paths ["feature-priority-map"]
:dependencies [[org.clojure/data.priority-map "1.1.0"]]} :dependencies [[org.clojure/data.priority-map "1.1.0"]]}
@ -95,9 +97,9 @@
{:dependencies [[com.clojure-goes-fast/clj-async-profiler "0.5.0"] {:dependencies [[com.clojure-goes-fast/clj-async-profiler "0.5.0"]
[com.opentable.components/otj-pg-embedded "0.13.3"] [com.opentable.components/otj-pg-embedded "0.13.3"]
[nubank/matcher-combinators "3.6.0"]]}] [nubank/matcher-combinators "3.6.0"]]}]
:uberjar {:global-vars {*assert* false} :uberjar {;; :global-vars {*assert* false}
:jvm-opts ["-Dclojure.compiler.direct-linking=true" :jvm-opts [#_"-Dclojure.compiler.direct-linking=true"
"-Dclojure.spec.skip-macros=true" #_"-Dclojure.spec.skip-macros=true"
"-Dborkdude.dynaload.aot=true"] "-Dborkdude.dynaload.aot=true"]
:main babashka.main :main babashka.main
:aot [babashka.main]} :aot [babashka.main]}

View file

@ -48,6 +48,7 @@
com.taoensso/timbre {:mvn/version "6.0.1"} com.taoensso/timbre {:mvn/version "6.0.1"}
org.clojure/tools.logging {:mvn/version "1.1.0"} org.clojure/tools.logging {:mvn/version "1.1.0"}
org.clojure/data.priority-map {:mvn/version "1.1.0"} org.clojure/data.priority-map {:mvn/version "1.1.0"}
instaparse/instaparse {:mvn/version "1.4.10"}
insn/insn {:mvn/version "0.5.2"} insn/insn {:mvn/version "0.5.2"}
org.clojure/core.rrb-vector {:mvn/version "0.1.2"} org.clojure/core.rrb-vector {:mvn/version "0.1.2"}
org.babashka/cli {:mvn/version "0.6.41"}} org.babashka/cli {:mvn/version "0.6.41"}}

View file

@ -3,28 +3,46 @@
(:require [babashka.impl.patches.datafy] (:require [babashka.impl.patches.datafy]
[babashka.impl.pprint])) [babashka.impl.pprint]))
;; Enable this for scanning requiring-resolve usage: ;; Enable this for scanning requiring usage:
;; --- (def enable-require-scan
;; (def old-requiring-resolve requiring-resolve) "(do
(def old-require require)
;; (defmacro static-requiring-resolve [sym] (def old-resolve resolve)
;; (prn :sym sym)
;; `(old-requiring-resolve ~sym)) (def our-requiring-resolve (fn [sym]
(let [ns (symbol (namespace sym))]
;; (alter-var-root #'requiring-resolve (constantly @#'static-requiring-resolve)) (old-require ns)
;; (doto #'requiring-resolve (.setMacro)) (old-resolve sym))))
;; ---
(defn static-requiring-resolve [form _ _]
;; ((requiring-resolve 'clojure.pprint/pprint) (range 20)) (prn :req-resolve form :args (rest form))
`(let [res# (our-requiring-resolve ~@(rest form))]
;; Enable this for detecting literal usages of require res#))
;; ---
;; (def old-require require) (alter-var-root #'requiring-resolve (constantly @#'static-requiring-resolve))
(doto #'requiring-resolve (.setMacro))
;; (defmacro static-require [& syms]
;; (when (meta &form) (defn static-require [& [&form _bindings & syms]]
;; (prn :require &form )) (when (meta &form)
;; `(old-require ~@syms)) (prn :require &form (meta &form) *file*))
;; (alter-var-root #'require (constantly @#'static-require)) `(old-require ~@syms))
;; (doto #'require (.setMacro)) (alter-var-root #'require (constantly @#'static-require))
(doto #'require (.setMacro))
(alter-var-root #'clojure.core/serialized-require (constantly (fn [& args]
(prn :serialized-req args)))))
(defn static-resolve [& [&form _bindings & syms]]
(when (meta &form)
(prn :require &form (meta &form) *file*))
`(old-resolve ~@syms))
(alter-var-root #'resolve (constantly @#'static-resolve))
(doto #'resolve (.setMacro))
")
(when (System/getenv "BABASHKA_REQUIRE_SCAN")
(load-string enable-require-scan))
;; --- ;; ---

View file

@ -0,0 +1,18 @@
(ns babashka.impl.instaparse
(:require
[instaparse.combinators-source :as source]
[instaparse.core :as insta]
[sci.core :as sci]))
(def ins (sci/create-ns 'instaparse.core))
(def instaparse-namespace
{#_#_'defparser (sci/copy-var insta/defparser ins)
#_#_'map->Parser (sci/copy-var insta/map->Parser ins)
'parser (sci/copy-var insta/parser ins)
#_#_'transform (sci/copy-var insta/transform ins)})
(def sns (sci/create-ns 'instaparse.combinators-source))
(def instaparse.combinators-source-namespace
{'regexp (sci/copy-var source/regexp sns)})

View file

@ -346,6 +346,8 @@ Use bb run --help to show this help output.
(def clojure-main-ns (sci/create-ns 'clojure.main)) (def clojure-main-ns (sci/create-ns 'clojure.main))
(require 'babashka.impl.instaparse)
(defn catvec [& xs] (defn catvec [& xs]
(into [] cat xs)) (into [] cat xs))
@ -476,7 +478,11 @@ Use bb run --help to show this help output.
'clojure.tools.logging.readable 'clojure.tools.logging.readable
@(resolve 'babashka.impl.logging/tools-logging-readable-namespace)) @(resolve 'babashka.impl.logging/tools-logging-readable-namespace))
features/priority-map? (assoc 'clojure.data.priority-map features/priority-map? (assoc 'clojure.data.priority-map
@(resolve 'babashka.impl.priority-map/priority-map-namespace)))) @(resolve 'babashka.impl.priority-map/priority-map-namespace))
true (assoc 'instaparse.core
@(resolve 'babashka.impl.instaparse/instaparse-namespace)
'instaparse.combinators-source
@(resolve 'babashka.impl.instaparse/instaparse.combinators-source-namespace))))
(def edn-readers (cond-> {} (def edn-readers (cond-> {}
features/yaml? features/yaml?
@ -1132,6 +1138,13 @@ Use bb run --help to show this help output.
(let [exit-code (run args)] (let [exit-code (run args)]
(System/exit exit-code)))) (System/exit exit-code))))
;; disable graalvm bloat
(alter-var-root #'require (constantly (fn [& args] (prn :req args))))
(alter-var-root #'resolve (constantly (fn [& args] (prn :resolve args))))
(alter-var-root #'requiring-resolve (constantly (fn [& args] (prn :req-resolve args))))
(alter-var-root #'find-var (constantly (fn [& args] (prn :find-var args))))
(alter-var-root #'find-ns (constantly (fn [& args] (prn :find-ns args))))
;;;; Scratch ;;;; Scratch
(comment) (comment)