mirror of
https://github.com/janet-lang/janet
synced 2024-12-24 07:20:27 +00:00
Merge branch 'master' into bundle-tools
This commit is contained in:
commit
751ff677fe
@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
|
|||||||
## Unreleased - ???
|
## Unreleased - ???
|
||||||
- Add `bundle/` module for managing packages within Janet. This should replace the jpm packaging
|
- Add `bundle/` module for managing packages within Janet. This should replace the jpm packaging
|
||||||
format eventually and is much simpler and amenable to more complicated builds.
|
format eventually and is much simpler and amenable to more complicated builds.
|
||||||
|
- Add macros `ev/with-lock`, `ev/with-rlock`, and `ev/with-wlock` for using mutexes and rwlocks.
|
||||||
|
- Add `with-env`
|
||||||
- Add *module-make-env* dynamic binding
|
- Add *module-make-env* dynamic binding
|
||||||
- Add buffer/format-at
|
- Add buffer/format-at
|
||||||
- Add long form command line options for readable CLI usage
|
- Add long form command line options for readable CLI usage
|
||||||
|
@ -3748,6 +3748,30 @@
|
|||||||
[& body]
|
[& body]
|
||||||
~(,ev/thread (fn _do-thread [&] ,;body)))
|
~(,ev/thread (fn _do-thread [&] ,;body)))
|
||||||
|
|
||||||
|
(defn- acquire-release
|
||||||
|
[acq rel lock body]
|
||||||
|
(def l (gensym))
|
||||||
|
~(do
|
||||||
|
(def ,l ,lock)
|
||||||
|
(,acq ,l)
|
||||||
|
(defer (,rel ,l)
|
||||||
|
,;body)))
|
||||||
|
|
||||||
|
(defmacro ev/with-lock
|
||||||
|
``Run a body of code after acquiring a lock. Will automatically release the lock when done.``
|
||||||
|
[lock & body]
|
||||||
|
(acquire-release ev/acquire-lock ev/release-lock lock body))
|
||||||
|
|
||||||
|
(defmacro ev/with-rlock
|
||||||
|
``Run a body of code after acquiring read access to an rwlock. Will automatically release the lock when done.``
|
||||||
|
[lock & body]
|
||||||
|
(acquire-release ev/acquire-rlock ev/release-rlock lock body))
|
||||||
|
|
||||||
|
(defmacro ev/with-wlock
|
||||||
|
``Run a body of code after acquiring read access to an rwlock. Will automatically release the lock when done.``
|
||||||
|
[lock & body]
|
||||||
|
(acquire-release ev/acquire-wlock ev/release-wlock lock body))
|
||||||
|
|
||||||
(defmacro ev/spawn-thread
|
(defmacro ev/spawn-thread
|
||||||
``Run some code in a new thread. Like `ev/do-thread`, but returns nil immediately.``
|
``Run some code in a new thread. Like `ev/do-thread`, but returns nil immediately.``
|
||||||
[& body]
|
[& body]
|
||||||
|
@ -112,7 +112,8 @@ extern "C" {
|
|||||||
|| defined(__s390x__) /* S390 64-bit (BE) */ \
|
|| defined(__s390x__) /* S390 64-bit (BE) */ \
|
||||||
|| (defined(__ppc64__) || defined(__PPC64__)) \
|
|| (defined(__ppc64__) || defined(__PPC64__)) \
|
||||||
|| defined(__aarch64__) /* ARM 64-bit */ \
|
|| defined(__aarch64__) /* ARM 64-bit */ \
|
||||||
|| (defined(__riscv) && (__riscv_xlen == 64)) /* RISC-V 64-bit */
|
|| (defined(__riscv) && (__riscv_xlen == 64)) /* RISC-V 64-bit */ \
|
||||||
|
|| defined(__loongarch64) /* LoongArch64 64-bit */
|
||||||
#define JANET_64 1
|
#define JANET_64 1
|
||||||
#else
|
#else
|
||||||
#define JANET_32 1
|
#define JANET_32 1
|
||||||
|
@ -976,4 +976,7 @@
|
|||||||
(assert (= () '() (macex '())) "macex ()")
|
(assert (= () '() (macex '())) "macex ()")
|
||||||
(assert (= '[] (macex '[])) "macex []")
|
(assert (= '[] (macex '[])) "macex []")
|
||||||
|
|
||||||
|
(assert (= :a (with-env @{:b :a} (dyn :b))) "with-env dyn")
|
||||||
|
(assert-error "unknown symbol +" (with-env @{} (eval '(+ 1 2))))
|
||||||
|
|
||||||
(end-suite)
|
(end-suite)
|
||||||
|
Loading…
Reference in New Issue
Block a user