core.typed has had many homes over the years. Unfortunately, the git history and historical Maven coordinates can be rather confusing, so this document serves explain it for posterity.
Author: Ambrose Bonnaire-Sergeant
Typed Clojure started life in frenchy64/typed-clojure. The original commit is d1edc56c.
The Clojars coordinates was typed/typed.
The first release was [typed "0.1"]
, and the
main namespace was called typed.core
and was 9,339 lines long.
The final released version was 0.1.6 (commit, released for Clojure 1.5.0-RC1.
The final relevant master branch commit was 1c9a99ac,
for 0.1.7-SNAPSHOT
.
I offered Typed Clojure up for contrib, and that became the clojure/core.typed repository.
At that point, there were two first commits, joined by a merge commit.
* 1c9a99ac Merge branch 'master' of github.com:clojure/core.typed (clojure/core.typed)
|\
| * c7e5b19d First commit. (clojure/core.typed first commit)
* 2d95c459 Further along CLJS compiler (frenchy64/typed-clojure)
| ...
* (all of frenchy64/typed-clojure)
| ...
* d1edc56c Some sketches with syntax (frenchy64/typed-clojure first commit)
The left branch is the entire frenchy64/typed-clojure
history, starting at
d1edc56c.
The right branch starts at the "real" first commit of clojure/core.typed
c7e5b19d, which
just included a README.md
file.
The new Clojars coordinate was core.typed/core.typed. The first released version was 0.1.7, with a new main namespace clojure.core.typed at 711 lines long.
The final released version at this coordinate was [core.typed "0.1.8"]
.
Then, core.typed was setup to release to Maven central via the contrib build process under the org.clojure/core.typed coordinate.
This housed versions 0.1.9
(commit) to 0.6.0
.
As explained here, core.typed was split into many different repositories.
core.typed was merged back into a single repository, continuing on from
the original clojure/core.typed
master branch from commit
241a703d.
To perform the merge, I created a fresh repository with a single commit f95bdf27.
Then, in the fresh repository, I ran the following script to merge the 6 individual repos:
#!/bin/bash
set -e
git subtree add -P module-analyzer.jvm https://github.com/clojure/core.typed.analyzer.jvm.git 31892d2a3e1083d0cd495c39e4704eacf14e0d96
git subtree add -P module-annotator.jvm https://github.com/clojure/core.typed.annotator.jvm.git 25d2d433c983b16445f8da9d9cc80789e9673bdf
git subtree add -P module-checker.jvm https://github.com/clojure/core.typed.checker.jvm.git 33f3e269a1de640543a6c64fc33fa6faaf071e7a
git subtree add -P module-runtime.jvm https://github.com/clojure/core.typed.runtime.jvm.git c0a07a2dd2d1d67196f38b517c47905531179842
git subtree add -P module-lang.jvm https://github.com/typedclojure/core.typed.lang.jvm.git da7a11930fbbc237376cd14550231c90cab05146
git subtree add -P module-lib.clojure https://github.com/typedclojure/core.typed.lib.clojure.git b090c2f3d94714e8d248aad0b3e1b2305dd58eb1
Then, I merged this fresh repository with 241a703d. I actually intended to run the script directly on 241a703d, and the extra merge was a mistake.
I intended this to have introduced 6 additional new orphan "first commits". Unfortunately, it introduced a 7th, the first commit for my fresh repository above.
You can see all orphaned commits (9 at this point!) with this command:
git rev-list --max-parents=0 9a47983d2b51befde6d200d874c0f238c5226d4f | xargs git log
So there are 9 "first commits" in core.typed:
frenchy64/typed
repository (d1edc56c)clojure/core.typed
repository (c7e5b19d)All 9 "first commits" are visualized below.
...
* f533b942 Merge remote-tracking branch 'monorepo/master' into monorepo
|\
| * d02b533a skip mvn tests
| ...
| * 277faedb Add 'module-lib.clojure/' from commit 'b090c2f3d94714e8d248aad0b3e1b2305dd58eb1'
| |\
| | * b090c2f3 move to github actions
| | ...
| | * 5fd81305 init
| * e299b1d7 Add 'module-lang.jvm/' from commit 'da7a11930fbbc237376cd14550231c90cab05146'
| |\
| | * da7a1193 move to github actions
| | ...
| | * 5f97f21f initial commit
| * e5c4dc9a Add 'module-runtime.jvm/' from commit 'c0a07a2dd2d1d67196f38b517c47905531179842'
| |\
| | * c0a07a2d move to github actions
| | ...
| | * e012296a CTYP-145: now also producing a zero-dependency "core.typed.rt" artifact that contains only annotation machinery, suitable for use in libraries
| * 0c8b10c9 Add 'module-checker.jvm/' from commit '33f3e269a1de640543a6c64fc33fa6faaf071e7a'
| |\
| | * 33f3e269 download latest clj in circleci
| | ...
| | * 0e44e951 core.typed depends on core.typed.rt
| * 7cd0fbfa Add 'module-annotator.jvm/' from commit '25d2d433c983b16445f8da9d9cc80789e9673bdf'
| |\
| | * 25d2d433 move to github actions
| | ...
| | * eb0691b0 create module-infer and module-analyzer-jvm maven submodules
| * 7ed25546 Add 'module-analyzer.jvm/' from commit '31892d2a3e1083d0cd495c39e4704eacf14e0d96'
| |\
| | * 31892d2a move to github actions
| | ...
| | * 216a3e84 create module-infer and module-analyzer-jvm maven submodules
| * f95bdf27 cloning file
* 241a703d prepare for monorepo merge
...
* 1c9a99ac Merge branch 'master' of github.com:clojure/core.typed (clojure/core.typed)
|\
| * c7e5b19d First commit. (clojure/core.typed first commit)
* 2d95c459 Further along CLJS compiler (frenchy64/typed-clojure)
| ...
* d1edc56c Some sketches with syntax (frenchy64/typed-clojure first commit)
git subtree add -P module-checker.js https://github.com/clojure/core.typed.checker.js.git cf4cd218ba1b721fb1105129849ae1c74dc30ebc
...
* 497087b8 (frenchy64/merge-cljs-checker) Add 'module-checker.js/' from commit 'cf4cd218ba1b721fb1105129849ae1c74dc30ebc'
|\
| * cf4cd218 readme
| ...
| * b03896d1 Move Clojurescript typechecker into own mvn module
* e6659d6a history
...
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close