clj-p4 - Read-only Perforce-to-Git bridge, with stream and classic-depot support I found myself in need of a way to convert massive Perforce P4 repositories (large game projects) to Git. Other tools, like the official git-p4 and and p4-fusion, do not fully support "Perforce Streams/Virtual Streams," amongst other things. I've shared it here: https://github.com/leifericf/clj-p4 It also has features to https://github.com/leifericf/clj-p4#filtering-binaries without overloading the Perforce server. I might add support for Git LFS or some other binary-import-mechanism later.
Announcing Spindel — Reactive Computation You Can Fork
We're releasing Spindel, a reactive programming system for Clojure/ClojureScript where the execution context — every signal, every cached spin result, every continuation — is a first-class forkable value.
Key Features:
• O(1) forking — copy-on-write overlay backends; fork the reactive system, mutate independently, snapshot, serialize
• Typed delta algebra — sequence / map / scalar algebras flow inline; O(delta) updates from signal mutation to DOM patch
• Pluggable effects — spin macro is a CPS transform; libraries register their own breakpoint symbols (probabilistic programming, distributed RPC, …)
• Cross-platform — .cljc everywhere; same semantics on JVM and ClojureScript
(require '[org.replikativ.spindel.core :as s :refer [spin signal track]]
'[org.replikativ.spindel.incremental.interval :as iv]
'[org.replikativ.spindel.engine.impl.simple :as engine])
(def root (s/create-execution-context))
(s/with-context root
(def counter (signal 0))
(def doubled (spin (* 2 (iv/get-new (track counter))))))
;; Fork the entire reactive system
(def fork (s/fork-context root))
(s/with-context fork
(swap! counter inc)
(engine/await-drain-complete! fork)
@doubled) ; => 2 (fork has its own counter)
(s/with-context root
@doubled) ; => 0 (parent untouched)
Install: org.replikativ/spindel {:mvn/version "0.1.5"}
Links:
• GitHub: https://github.com/replikativ/spindel
• Examples: https://github.com/replikativ/spindel/tree/main/examples
• Engine deep-dive: https://github.com/replikativ/spindel/blob/main/docs/engine.md
Feedback appreciated! Will also be covered later in my London Clojurians talk.Recently, I had a problem with virt-manager's snapshot reverting. I came up with a bb script to avoid that, and I made a short video for it: https://youtu.be/E5SxZEp6Q0s
https://github.com/weavejester/teensyp is released. TeensyP is a small, zero-dependency library for building NIO TCP servers in Clojure. This release: • Changes the API to use a Socket protocol instead of a write function • Adds functionality to get the remote and local addresses of a connection • Adds blocking IO stream support
I have a project where this seems perfect. Thanks for the library!