common_* / xtalk Area Split SummaryThis note captures the second pass of the xtalk split.
The first pass extracted reusable xt.lang.common-* modules out of the old
xt.lang.base-lib surface. The second pass reorganizes
lang.core.base.grammar-xtalk-system so the public xtalk grammar profiles now
match the implementation areas that lang.core.base.grammar-xtalk already uses
internally.
grammar-xtalk implementation split detailed.grammar-xtalk-system profile model.:c, adopt only the common xtalk subset
first.The earlier split moved reusable helpers out of xt.lang.base-lib into smaller
modules such as:
xt.lang.common-basext.lang.common-libxt.lang.common-dataxt.lang.common-mathxt.lang.common-stringThat extraction is still the substrate for hard-linked xtalk helpers like:
xt.lang.common-base/identityxt.lang.common-data/obj-keysxt.lang.common-string/pad-leftxt.lang.common-string/starts-with?That same extraction can keep growing in-place:
xt.lang.common-lib for smaller helper and step combinatorsxt.lang.common-data for non-functional data helpers such as nested equality
and diff operationsgrammar-xtalk Shapelang.core.base.grammar-xtalk is now split into five implementation areas.
Internal groups:
+xt-common-basic++xt-common-index++xt-common-number++xt-common-nil++xt-common-primitives++xt-common-object++xt-common-array++xt-common-print++xt-common-string++xt-common-math+This is the portable substrate that a language like :c can implement first.
Internal groups:
+xt-functional-base++xt-functional-invoke++xt-functional-return++xt-functional-array++xt-functional-future++xt-functional-iter+Internal groups:
+xt-lang-lu++xt-lang-global++xt-lang-proto++xt-lang-bit++xt-lang-throw++xt-lang-unpack++xt-lang-random++xt-lang-time+lang.core Link SpecificInternal groups:
+xt-notify-socket++xt-notify-http++xt-network-socket++xt-network-ws++xt-network-debug-client-basic++xt-network-debug-client-ws++xt-network-server-basic++xt-network-server-ws+Internal groups:
+xt-runtime-cache++xt-runtime-thread++xt-runtime-shell++xt-runtime-file++xt-runtime-b64++xt-runtime-uri++xt-runtime-js+grammar-xtalk-system ReorgThe system layer now exposes one public xtalk profile per implementation area:
:xtalk-common:xtalk-functional:xtalk-language-specific:xtalk-std-lang-link-specific:xtalk-runtime-specificThis is the key change.
The detailed split still lives in lang.core.base.grammar-xtalk, but
lang.core.base.grammar-xtalk-system now flattens those detailed groups into the
five public grammar profiles above.
A new language can start with:
:xtalk-commonand only add the others when ready:
:xtalk-functional:xtalk-language-specific:xtalk-std-lang-link-specific:xtalk-runtime-specificThis is especially useful for :c, where the initial implementation target is
the portable common subset rather than the full xtalk surface.
The public xtalk categories now line up with the implementation story:
lang.core link adaptersThat keeps:
grammar/buildaligned around the same five-part classification.
The old fine-grained public profile names such as:
:xtalk-common-object:xtalk-functional-array:xtalk-lang-lu:xtalk-runtime-jsare no longer the public grammar-xtalk-system profile boundary.
They remain useful as internal implementation buckets inside
lang.core.base.grammar-xtalk, but the system-facing grammar profile model is
now area-based.
Use:
:xtalk-commonUse:
:xtalk-common:xtalk-functional:xtalk-language-specificAdd:
:xtalk-std-lang-link-specific:xtalk-runtime-specificThe split is now two-level:
xt.lang.common-* provides the reusable hard-link substrate.grammar-xtalk keeps detailed internal buckets.grammar-xtalk-system exposes five public area profiles.That gives us a simpler capability model for language bring-up while keeping the implementation itself well-factored.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |