koskari 0.1.0.dev20260813__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/PKG-INFO +297 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/SOURCES.txt +432 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/dependency_links.txt +1 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/entry_points.txt +9 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/not-zip-safe +1 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/requires.txt +14 -0
- koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/top_level.txt +1 -0
- koskari-0.1.0.dev20260813/LICENSE +674 -0
- koskari-0.1.0.dev20260813/MANIFEST.in +3 -0
- koskari-0.1.0.dev20260813/PKG-INFO +297 -0
- koskari-0.1.0.dev20260813/README.md +264 -0
- koskari-0.1.0.dev20260813/koskari/__init__.py +35 -0
- koskari-0.1.0.dev20260813/koskari/__main__.py +31 -0
- koskari-0.1.0.dev20260813/koskari/_version.py +38 -0
- koskari-0.1.0.dev20260813/koskari/asyncio.py +223 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/__init__.py +421 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_assert.ki +70 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_class.ki +79 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_conditionals.ki +132 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_decorator.ki +95 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_define_syntax.ki +165 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_fences.ki +38 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_functions.ki +109 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_help.ki +36 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_iter.ki +223 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_pairs.ki +95 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_pragma.ki +106 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/_variables.ki +468 -0
- koskari-0.1.0.dev20260813/koskari/bootstrap/basics.ki +214 -0
- koskari-0.1.0.dev20260813/koskari/builtins.py +46 -0
- koskari-0.1.0.dev20260813/koskari/cli/__init__.py +81 -0
- koskari-0.1.0.dev20260813/koskari/cli/host.py +255 -0
- koskari-0.1.0.dev20260813/koskari/cli/launch.ki +334 -0
- koskari-0.1.0.dev20260813/koskari/cli/repl.ki +309 -0
- koskari-0.1.0.dev20260813/koskari/compile/__init__.py +32 -0
- koskari-0.1.0.dev20260813/koskari/compile/compiler.py +1656 -0
- koskari-0.1.0.dev20260813/koskari/compile/helpers.py +1247 -0
- koskari-0.1.0.dev20260813/koskari/compile/pragma/__init__.py +45 -0
- koskari-0.1.0.dev20260813/koskari/compile/pragma/resolution.py +420 -0
- koskari-0.1.0.dev20260813/koskari/compile/pragma/settings.py +279 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/__init__.py +252 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/begin.py +47 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/bytecode.py +72 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/call.py +358 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/class_.py +178 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/collections.py +192 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/conditionals.py +362 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/context.py +205 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/continuations.py +302 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/dyn_wind.py +185 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/exceptions.py +373 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/fence.py +116 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/imports.py +363 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/items.py +175 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/lambda_.py +215 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/let.py +169 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/loops.py +197 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/object.py +1072 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/pairs.py +143 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/quasiquote.py +412 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/refs.py +178 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/slots.py +162 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/syntax.py +552 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/thunk.py +154 -0
- koskari-0.1.0.dev20260813/koskari/compile/specials/variables.py +431 -0
- koskari-0.1.0.dev20260813/koskari/dis.ki +581 -0
- koskari-0.1.0.dev20260813/koskari/exceptions.py +816 -0
- koskari-0.1.0.dev20260813/koskari/extras/lsp/__init__.py +33 -0
- koskari-0.1.0.dev20260813/koskari/extras/lsp/handlers.py +207 -0
- koskari-0.1.0.dev20260813/koskari/extras/lsp/server.py +88 -0
- koskari-0.1.0.dev20260813/koskari/extras/lsp/utils.py +92 -0
- koskari-0.1.0.dev20260813/koskari/extras/pygments/__init__.py +83 -0
- koskari-0.1.0.dev20260813/koskari/extras/pygments/lexer.py +87 -0
- koskari-0.1.0.dev20260813/koskari/extras/setuptools/__init__.py +39 -0
- koskari-0.1.0.dev20260813/koskari/extras/setuptools/metadata.py +364 -0
- koskari-0.1.0.dev20260813/koskari/extras/setuptools/plugin.py +256 -0
- koskari-0.1.0.dev20260813/koskari/extras/sphinx/__init__.py +93 -0
- koskari-0.1.0.dev20260813/koskari/extras/sphinx/autodoc.py +266 -0
- koskari-0.1.0.dev20260813/koskari/extras/sphinx/builtins_directive.py +179 -0
- koskari-0.1.0.dev20260813/koskari/extras/sphinx/partition.py +268 -0
- koskari-0.1.0.dev20260813/koskari/extras/sphinx/rst.py +64 -0
- koskari-0.1.0.dev20260813/koskari/fences/__init__.py +48 -0
- koskari-0.1.0.dev20260813/koskari/fences/helpers.py +130 -0
- koskari-0.1.0.dev20260813/koskari/help/__init__.ki +41 -0
- koskari-0.1.0.dev20260813/koskari/help/layout.ki +57 -0
- koskari-0.1.0.dev20260813/koskari/help/syntax.ki +86 -0
- koskari-0.1.0.dev20260813/koskari/help/tools.ki +344 -0
- koskari-0.1.0.dev20260813/koskari/hygiene.py +774 -0
- koskari-0.1.0.dev20260813/koskari/importer.py +306 -0
- koskari-0.1.0.dev20260813/koskari/launcher.py +201 -0
- koskari-0.1.0.dev20260813/koskari/lexer/__init__.py +70 -0
- koskari-0.1.0.dev20260813/koskari/lexer/discovery.py +82 -0
- koskari-0.1.0.dev20260813/koskari/lexer/highlight.py +138 -0
- koskari-0.1.0.dev20260813/koskari/lexer/parser.py +126 -0
- koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/__init__.py +40 -0
- koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/completer.py +114 -0
- koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/key_bindings.py +134 -0
- koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/lexer.py +163 -0
- koskari-0.1.0.dev20260813/koskari/lexer/tokens.py +383 -0
- koskari-0.1.0.dev20260813/koskari/lib/arena.c +311 -0
- koskari-0.1.0.dev20260813/koskari/lib/arena.h +127 -0
- koskari-0.1.0.dev20260813/koskari/lib/async_loop.c +386 -0
- koskari-0.1.0.dev20260813/koskari/lib/async_loop.h +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/atom.c +591 -0
- koskari-0.1.0.dev20260813/koskari/lib/atom.h +80 -0
- koskari-0.1.0.dev20260813/koskari/lib/bytecode.c +3618 -0
- koskari-0.1.0.dev20260813/koskari/lib/bytecode.h +749 -0
- koskari-0.1.0.dev20260813/koskari/lib/callable.c +160 -0
- koskari-0.1.0.dev20260813/koskari/lib/callable.h +140 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat.c +294 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat.h +226 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_310.h +24 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_311.h +87 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_312.h +79 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_313.h +80 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_314.h +83 -0
- koskari-0.1.0.dev20260813/koskari/lib/compat_39.h +50 -0
- koskari-0.1.0.dev20260813/koskari/lib/cont.c +468 -0
- koskari-0.1.0.dev20260813/koskari/lib/cont.h +94 -0
- koskari-0.1.0.dev20260813/koskari/lib/coro.c +603 -0
- koskari-0.1.0.dev20260813/koskari/lib/coro.h +95 -0
- koskari-0.1.0.dev20260813/koskari/lib/debug.h +68 -0
- koskari-0.1.0.dev20260813/koskari/lib/defer.c +737 -0
- koskari-0.1.0.dev20260813/koskari/lib/defer.h +97 -0
- koskari-0.1.0.dev20260813/koskari/lib/demand.c +1467 -0
- koskari-0.1.0.dev20260813/koskari/lib/demand.h +93 -0
- koskari-0.1.0.dev20260813/koskari/lib/domain.c +746 -0
- koskari-0.1.0.dev20260813/koskari/lib/domain.h +124 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_boundary.c +194 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_cc.c +109 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_cc_raise.c +84 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_collect.c +144 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_delim.c +207 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_finally.c +137 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_foreach.c +213 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_frame.c +287 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_gen.c +368 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_loop.c +130 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_next.c +197 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_ns.c +119 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_param.c +315 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_prompt.c +163 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_shift.c +87 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_try.c +121 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_walk.c +798 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_wind.c +374 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_with.c +678 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_yield_from.c +334 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain/xfer_plan.c +1802 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain.c +2790 -0
- koskari-0.1.0.dev20260813/koskari/lib/dynchain.h +2462 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_cache.c +816 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_chain.c +476 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_gil.c +193 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_obj.c +263 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_state.c +274 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval/eval_utils.c +1094 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval.c +2843 -0
- koskari-0.1.0.dev20260813/koskari/lib/eval.h +841 -0
- koskari-0.1.0.dev20260813/koskari/lib/formals.c +1850 -0
- koskari-0.1.0.dev20260813/koskari/lib/formals.h +202 -0
- koskari-0.1.0.dev20260813/koskari/lib/func.c +2339 -0
- koskari-0.1.0.dev20260813/koskari/lib/func.h +341 -0
- koskari-0.1.0.dev20260813/koskari/lib/handlers.incl +198 -0
- koskari-0.1.0.dev20260813/koskari/lib/hints.h +83 -0
- koskari-0.1.0.dev20260813/koskari/lib/iter.c +986 -0
- koskari-0.1.0.dev20260813/koskari/lib/iter.h +124 -0
- koskari-0.1.0.dev20260813/koskari/lib/lib.c +235 -0
- koskari-0.1.0.dev20260813/koskari/lib/lib.h +126 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/datum.c +506 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_app.c +48 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_capture.c +114 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_class.c +251 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_form.c +97 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_group.c +74 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_map.c +123 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_match.c +49 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_not.c +20 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_oneof.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_optional.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_repeat.c +206 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/match_rest.c +56 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/subject.c +262 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/thaw.c +579 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher/validate.c +809 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher.c +2379 -0
- koskari-0.1.0.dev20260813/koskari/lib/matcher.h +663 -0
- koskari-0.1.0.dev20260813/koskari/lib/namespace.c +2703 -0
- koskari-0.1.0.dev20260813/koskari/lib/namespace.h +535 -0
- koskari-0.1.0.dev20260813/koskari/lib/object.c +673 -0
- koskari-0.1.0.dev20260813/koskari/lib/object.h +86 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_CLEAR.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_INPLACE.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_REF.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_STORE.c +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_TAKE.c +46 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/AWAIT.c +44 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BREAK.c +60 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_ARGS.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_CLASS.c +92 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_FUNCTION.c +95 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_KWDS.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_KWDS_NAMES.c +50 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST.c +42 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_APPEND.c +48 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_APPEND_CONST.c +48 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_CONST.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_EXTEND.c +56 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_EXTEND_CONST.c +73 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL.c +37 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR.c +63 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR_NAMES.c +80 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR_STAR.c +166 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST.c +50 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR.c +75 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR_NAMES.c +90 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR_STAR.c +143 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_NAMES.c +68 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_STAR.c +116 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_NAMES.c +60 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_STAR.c +120 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR.c +73 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR_NAMES.c +93 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR_STAR.c +162 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_NAMES.c +69 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_STAR.c +118 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CAPTURE_CC.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CAR.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CDR.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE.c +50 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE_FAST.c +68 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE_VAR.c +69 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_EXCEPTION.c +48 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_NIL.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_FINALLY.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_FOREACH.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_LOOP.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_TRY.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/COMBINE_ARGS.c +96 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/COMBINE_KWDS.c +65 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONS.c +47 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_CLEAR.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_REF.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_STORE.c +45 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_TAKE.c +47 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/CONTINUE.c +60 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/DEREF.c +36 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/DUP.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION.c +40 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION_CLEAR.c +28 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION_MATCH.c +48 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST.c +31 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST2.c +46 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST4.c +52 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR.c +66 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_CLEAR.c +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_INPLACE.c +65 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_REF.c +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_STORE.c +73 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_TAKE.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_BIND.c +43 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_CLEAR.c +29 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_INPLACE.c +36 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_INPLACE_CONST.c +52 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ITER.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_LIST_APPEND.c +57 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_NEXT.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_REF.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_STORE.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_STORE_CONST.c +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_TAKE.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/GLOBALS.c +28 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT.c +58 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT_FROM.c +122 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT_STAR.c +134 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM.c +42 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_CLEAR.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_REF.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_STORE.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_TAKE.c +50 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/ITER_NEXT.c +102 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_AND.c +49 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_FALSE.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_OR.c +49 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_TRUE.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/LABEL.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/LOCALS.c +28 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/MATCH_CASE.c +125 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/MATCH_STORE_NAMES.c +59 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/NILP.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/NOOP.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_BIT_INVERT.c +30 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE.c +47 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE_FAST.c +46 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE_VAR.c +46 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_DIR.c +30 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_DIVMOD.c +36 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_FORMAT.c +56 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_FORMAT_CONST.c +42 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_INPLACE.c +35 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_ITER.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_LEN.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_NEXT.c +174 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_NOT.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_OPERAND.c +34 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_REPR.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_STR.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_TRUTH.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_TYPE.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_VARS.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PAIR_SPLICE.c +127 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PARAM.c +56 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PARAM_CONST.c +46 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_CC.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_COLLECT.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_DYN_WITH.c +67 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_FINALLY.c +72 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_FOREACH.c +47 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_LOOP.c +44 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_NS.c +30 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_PARAM.c +30 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_PROMPT.c +113 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_SHIFT.c +135 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_TRY.c +44 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_WIND.c +51 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_WITH.c +69 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/POSITION.c +26 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PROPER.c +49 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_CC.c +43 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_COLLECT.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_DYN_WITH.c +85 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_FINALLY.c +31 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_FOREACH.c +74 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_LOOP.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_NS.c +122 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_PARAM.c +42 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_PROMPT.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_SHIFT.c +70 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_TRY.c +31 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_WIND.c +89 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_WITH.c +93 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/RAISE.c +69 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/RETURN.c +66 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ.c +43 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_CONST.c +49 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_FAST.c +55 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_FAST_ATTR.c +64 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_VAR.c +56 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_VAR_ATTR.c +63 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL.c +41 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL_NAMES.c +59 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL_STAR.c +121 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/THEEND.c +33 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK.c +57 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_FAST.c +66 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_STAR.c +95 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_VAR.c +65 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR.c +34 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR2.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR4.c +52 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR.c +64 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_CLEAR.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_INPLACE.c +63 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_REF.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_STORE.c +71 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_TAKE.c +51 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_BIND.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_CLEAR.c +30 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_INPLACE.c +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_INPLACE_CONST.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ITER.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_LIST_APPEND.c +57 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_NEXT.c +54 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_REF.c +32 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_STORE.c +37 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_STORE_CONST.c +39 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_TAKE.c +34 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/YIELD.c +53 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcode/YIELD_FROM.c +753 -0
- koskari-0.1.0.dev20260813/koskari/lib/opcodes.incl +326 -0
- koskari-0.1.0.dev20260813/koskari/lib/operator.c +1059 -0
- koskari-0.1.0.dev20260813/koskari/lib/operator.h +203 -0
- koskari-0.1.0.dev20260813/koskari/lib/pair.c +2387 -0
- koskari-0.1.0.dev20260813/koskari/lib/pair.h +168 -0
- koskari-0.1.0.dev20260813/koskari/lib/parse.c +818 -0
- koskari-0.1.0.dev20260813/koskari/lib/parse.h +106 -0
- koskari-0.1.0.dev20260813/koskari/lib/partial.c +688 -0
- koskari-0.1.0.dev20260813/koskari/lib/partial.h +51 -0
- koskari-0.1.0.dev20260813/koskari/lib/property.c +239 -0
- koskari-0.1.0.dev20260813/koskari/lib/property.h +38 -0
- koskari-0.1.0.dev20260813/koskari/lib/ref.c +1770 -0
- koskari-0.1.0.dev20260813/koskari/lib/ref.h +290 -0
- koskari-0.1.0.dev20260813/koskari/lib/stack.c +1901 -0
- koskari-0.1.0.dev20260813/koskari/lib/stack.h +728 -0
- koskari-0.1.0.dev20260813/koskari/lib/tracing.c +1120 -0
- koskari-0.1.0.dev20260813/koskari/lib/tracing.h +251 -0
- koskari-0.1.0.dev20260813/koskari/lib/utils.c +1680 -0
- koskari-0.1.0.dev20260813/koskari/lib/utils.h +295 -0
- koskari-0.1.0.dev20260813/koskari/lib/values.c +843 -0
- koskari-0.1.0.dev20260813/koskari/lib/values.h +76 -0
- koskari-0.1.0.dev20260813/koskari/matcher.py +4051 -0
- koskari-0.1.0.dev20260813/koskari/module.py +506 -0
- koskari-0.1.0.dev20260813/koskari/pragma.py +273 -0
- koskari-0.1.0.dev20260813/koskari/reader/__init__.py +61 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/__init__.py +203 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/basics.py +230 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/classes.py +102 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/conditionals.py +341 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/define_syntax.py +260 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/dyn_wind.py +102 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/exceptions.py +131 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/helpers.py +136 -0
- koskari-0.1.0.dev20260813/koskari/reader/layouts/loops.py +100 -0
- koskari-0.1.0.dev20260813/koskari/reader/parser.py +3843 -0
- koskari-0.1.0.dev20260813/koskari/reader/patterns.py +64 -0
- koskari-0.1.0.dev20260813/koskari/reader/pragma.py +126 -0
- koskari-0.1.0.dev20260813/koskari/serialize/__init__.py +42 -0
- koskari-0.1.0.dev20260813/koskari/serialize/codex.py +1036 -0
- koskari-0.1.0.dev20260813/koskari/serialize/constants.py +37 -0
- koskari-0.1.0.dev20260813/koskari/serialize/incremental.py +140 -0
- koskari-0.1.0.dev20260813/koskari/solve.ki +146 -0
- koskari-0.1.0.dev20260813/koskari/syntax.py +691 -0
- koskari-0.1.0.dev20260813/koskari/types.py +223 -0
- koskari-0.1.0.dev20260813/koskari.pth +1 -0
- koskari-0.1.0.dev20260813/pyproject.toml +10 -0
- koskari-0.1.0.dev20260813/setup.cfg +329 -0
- koskari-0.1.0.dev20260813/setup.py +170 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: koskari
|
|
3
|
+
Version: 0.1.0.dev20260813
|
|
4
|
+
Summary: Koskari: A LISP dialect for Python
|
|
5
|
+
Author: Christopher O'Brien
|
|
6
|
+
Author-email: obriencj@gmail.com
|
|
7
|
+
License: GNU General Public License v3 (GPLv3)
|
|
8
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
18
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
19
|
+
Requires-Python: >=3.9
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Provides-Extra: repl
|
|
23
|
+
Requires-Dist: prompt_toolkit>=3.0; extra == "repl"
|
|
24
|
+
Provides-Extra: lsp
|
|
25
|
+
Requires-Dist: pygls>=2.0; extra == "lsp"
|
|
26
|
+
Requires-Dist: lsprotocol; extra == "lsp"
|
|
27
|
+
Provides-Extra: pygments
|
|
28
|
+
Requires-Dist: pygments>=2.0; extra == "pygments"
|
|
29
|
+
Provides-Extra: sphinx
|
|
30
|
+
Requires-Dist: sphinx>=7.0; extra == "sphinx"
|
|
31
|
+
Requires-Dist: pygments>=2.0; extra == "sphinx"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# <img src="docs/_static/koskari-icon.svg" height="42" align="top" alt=""> Koskari
|
|
35
|
+
|
|
36
|
+
Koskari is a LISP dialect for Python -- indent-based layout syntax, macros, and a
|
|
37
|
+
custom bytecode evaluator that runs on CPython.
|
|
38
|
+
|
|
39
|
+
```koskari
|
|
40
|
+
define greet [name]:
|
|
41
|
+
print (+ "Hello, " name "!")
|
|
42
|
+
|
|
43
|
+
when-main:
|
|
44
|
+
greet "world"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
koskari hello.ki
|
|
49
|
+
# Hello, world!
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
## Overview
|
|
54
|
+
|
|
55
|
+
Koskari is the fourth iteration of the Sibilant idea, learning from the experiences of:
|
|
56
|
+
- **[spexy](https://github.com/obriencj/python-spexy)**: S-expressions compiled to Python expression strings, with `let`, `cond`, and multi-expression `lambda` grafted on. Where the reader and s-expression representation began.
|
|
57
|
+
- **[python-sibilant](https://github.com/obriencj/python-sibilant)**: CPython bytecode target (abandoned due to version churn)
|
|
58
|
+
- **[sibilant-ceval](https://github.com/obriencj/sibilant-ceval)**: Custom bytecode evaluator (blocked on call/cc implementation)
|
|
59
|
+
|
|
60
|
+
This version aims to be a perfect playground -- a language with all the useful features of Python but significantly fewer restrictions, designed to make writing code a joyous expression of will upon the computer.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
**Prerequisites:** Python 3.9+, a C compiler, and [uv](https://docs.astral.sh/uv/) for
|
|
66
|
+
the virtual-environment workflow below.
|
|
67
|
+
|
|
68
|
+
### Virtual environment
|
|
69
|
+
|
|
70
|
+
From a repository checkout:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
make venv # creates .venv and installs koskari (editable, with repl extra)
|
|
74
|
+
make venv-koslife # optional: adds the koslife demo
|
|
75
|
+
uv run koskari # interactive REPL
|
|
76
|
+
uv run koskari hello.ki
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Install
|
|
80
|
+
|
|
81
|
+
To install into your active Python environment instead:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pip install ".[repl]"
|
|
85
|
+
koskari # interactive REPL
|
|
86
|
+
koskari hello.ki # run a script
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The `repl` extra enables syntax-highlighted REPL input via `prompt_toolkit`. Other
|
|
90
|
+
optional extras: `lsp`, `pygments`, `sphinx`.
|
|
91
|
+
|
|
92
|
+
See [docs/start/install-run.md](docs/start/install-run.md) for the full first-session walkthrough.
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
## Documentation
|
|
96
|
+
|
|
97
|
+
User documentation lives in [docs/](docs/) and builds into a Sphinx site with
|
|
98
|
+
`make docs`:
|
|
99
|
+
|
|
100
|
+
- **[Getting started](docs/start/overview.md)** -- install, first program, and
|
|
101
|
+
two on-ramps: a [beginner track](docs/start/beginner/index.md) for readers new
|
|
102
|
+
to programming and a [from-Python track](docs/start/from-python/index.md) for
|
|
103
|
+
Python developers.
|
|
104
|
+
- **[Guide](docs/guide/index.md)** -- the shared concept spine. Each chapter is a
|
|
105
|
+
quick orientation that points to the authoritative
|
|
106
|
+
[concepts](docs/reference/concepts/index.md) pages for the full rules.
|
|
107
|
+
- **[Reference](docs/reference/index.md)** -- special forms, macros, layouts, the
|
|
108
|
+
runtime library, and VM opcodes.
|
|
109
|
+
- **[Patterns](docs/patterns/index.md)** -- task-oriented recipes.
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
## Corpus and MCP server
|
|
113
|
+
|
|
114
|
+
Koskari maintains a verified example corpus under
|
|
115
|
+
[docs/corpus/](docs/corpus/): records carry `read` / `expand` / `eval`
|
|
116
|
+
verification phases, so they double as regression tests and as canonical
|
|
117
|
+
teaching material. The corpus is published as a Hugging Face dataset,
|
|
118
|
+
[obriencj/koskari](https://huggingface.co/datasets/obriencj/koskari).
|
|
119
|
+
|
|
120
|
+
A container-based **MCP server** exposes the corpus and the documentation to AI
|
|
121
|
+
coding assistants (Cursor, Claude Desktop, VS Code, and similar) so they can
|
|
122
|
+
search and author idiomatic Koskari. See
|
|
123
|
+
[tools/mcp/README.md](tools/mcp/README.md) for build and client setup.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
## Project status
|
|
127
|
+
|
|
128
|
+
Koskari is past early bootstrap. Layout syntax and macros compile to bytecode,
|
|
129
|
+
the native evaluator runs programs, `.ki` modules import like Python packages,
|
|
130
|
+
and the CLI provides a REPL and script runner. The test suite and
|
|
131
|
+
[verified corpus](docs/corpus/) exercise behavior across read, expand, compile,
|
|
132
|
+
and eval phases.
|
|
133
|
+
|
|
134
|
+
| Area | Status |
|
|
135
|
+
|------|--------|
|
|
136
|
+
| **Language** | Layout blocks, hygienic macros, and a broad special-form surface are implemented — see the [language reference](docs/reference/index.md) |
|
|
137
|
+
| **Runtime** | Stackless bytecode VM: coroutines, ambient async, continuations, dynamic wind, tail-call optimization |
|
|
138
|
+
| **Tooling** | REPL (`repl` extra), disassembler, optional LSP, Pygments, and Sphinx integrations |
|
|
139
|
+
| **Self-hosting** | Core builtins and much of the library live in bootstrap `.ki` sources; the CLI runs on self-hosted `.ki`, and the self-hosted compiler is on the roadmap |
|
|
140
|
+
|
|
141
|
+
The language and APIs are still **evolving** — treat the reference as authoritative,
|
|
142
|
+
not frozen. Compiler and opcode inventories for maintainers live in
|
|
143
|
+
[design/SPECIALS.md](design/SPECIALS.md) and [design/OPCODES.md](design/OPCODES.md).
|
|
144
|
+
Open work is tracked in [design/TODO.md](design/TODO.md); architecture notes are
|
|
145
|
+
in [design/](design/).
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
## Development
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Lint code
|
|
152
|
+
make lint
|
|
153
|
+
|
|
154
|
+
# Run unit tests
|
|
155
|
+
make test
|
|
156
|
+
|
|
157
|
+
# Run tests across Python versions (containerized)
|
|
158
|
+
make test-pyversions
|
|
159
|
+
|
|
160
|
+
# Clean build artifacts
|
|
161
|
+
make clean
|
|
162
|
+
|
|
163
|
+
# Build user documentation (Sphinx)
|
|
164
|
+
make docs
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Downstream Sphinx projects should enable
|
|
168
|
+
`extensions = ['koskari.extras.sphinx']` so autodoc renders `Function`, `Syntax`,
|
|
169
|
+
and `LayoutHandler` bindings with signatures and pattern/peer sections.
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
## Project Structure
|
|
173
|
+
|
|
174
|
+
The repository root is the Koskari project. Import symbols from the submodule that defines them; the top-level `koskari` package does not re-export.
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
.
|
|
178
|
+
├── design/ # Design documentation (see design/README.md)
|
|
179
|
+
├── editors/ # Editor syntax assets (emacs, helix, textmate)
|
|
180
|
+
├── examples/ # Example koskari programs (.ki files)
|
|
181
|
+
├── koskari/ # Main Python package
|
|
182
|
+
├── koskari.pth # Imports koskari on startup to install the .ki/.kio hooks
|
|
183
|
+
├── tests/ # Test suite (mirrors package layout)
|
|
184
|
+
├── tools/ # Opcode/editor regen, corpus tooling, and the MCP server
|
|
185
|
+
├── setup.py, setup.cfg # Package build and tox configuration
|
|
186
|
+
├── Makefile # Build, test, and lint targets
|
|
187
|
+
└── Containerfile # Runtime container image
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### koskari package
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
koskari/
|
|
194
|
+
├── __init__.py # Package init; registers import hooks
|
|
195
|
+
├── __main__.py # python -m koskari entry
|
|
196
|
+
├── exceptions.py # Koskari*, Reader*, Layout*, Compiler* exceptions
|
|
197
|
+
├── types.py # Value types from lib + Python predicates/helpers
|
|
198
|
+
├── syntax.py # Syntax form definitions
|
|
199
|
+
├── hygiene.py # Macro hygiene
|
|
200
|
+
├── matcher.py # Pattern matching for special forms (Python layer)
|
|
201
|
+
├── builtins.py # Builtins module placeholder (filled by bootstrap)
|
|
202
|
+
├── cli/ # Console entry: Python stub, host, launchpad, and REPL
|
|
203
|
+
│ ├── __init__.py # Sync entry; main() boots launch.ki via hosted_run
|
|
204
|
+
│ ├── host.py # Python REPL host (prompter, eval boundary, banners)
|
|
205
|
+
│ ├── launch.ki # CLI launchpad: argparse, file/command load, dispatch
|
|
206
|
+
│ └── repl.ki # Interactive REPL loop
|
|
207
|
+
├── module.py # Module lifecycle for .ki source files
|
|
208
|
+
├── importer.py # Import hook and loader for .ki/.kio modules
|
|
209
|
+
├── dis.ki # Self-hosted disassembler for Code objects
|
|
210
|
+
├── bootstrap/ # Bootstrap koskari sources and loader
|
|
211
|
+
│ ├── *.ki # Core forms compiled into builtins
|
|
212
|
+
│ └── __init__.py # Bootstrap loader
|
|
213
|
+
├── reader/ # S-expression parser and layout block syntax
|
|
214
|
+
│ ├── parser.py # Reader, SourceStream, LayoutReader
|
|
215
|
+
│ └── layouts/ # Layout handlers (conditionals, try, class, ...)
|
|
216
|
+
├── lexer/ # Token lexer and prompt_toolkit REPL
|
|
217
|
+
│ ├── tokens.py, parser.py, discovery.py, highlight.py
|
|
218
|
+
│ └── prompt_toolkit/ # REPL integration
|
|
219
|
+
├── extras/ # Optional integrations (namespace; no __init__.py)
|
|
220
|
+
│ ├── pygments/ # Syntax highlighting lexer
|
|
221
|
+
│ ├── sphinx/ # Sphinx extension and autodocumenters
|
|
222
|
+
│ └── lsp/ # koskari-lsp language server
|
|
223
|
+
├── help/ # In-REPL help for syntax, layouts, and tools
|
|
224
|
+
├── compile/ # Compiler, bytecode fragments, special forms
|
|
225
|
+
│ ├── compiler.py
|
|
226
|
+
│ ├── helpers.py
|
|
227
|
+
│ ├── pragma/ # Compile-time pragma resolution
|
|
228
|
+
│ └── specials/ # Special form handlers
|
|
229
|
+
├── serialize/ # Code serialization (codex format)
|
|
230
|
+
└── lib/ # C extension (native types, bytecode, evaluator)
|
|
231
|
+
├── atom.c, pair.c, namespace.c, formals.c, ref.c, values.c, ...
|
|
232
|
+
├── bytecode.c, eval.c, cont.c, dynchain.c, matcher.c, ...
|
|
233
|
+
├── dynchain/ # Dynamic extent handlers (with, wind, try, ...)
|
|
234
|
+
├── eval/ # Evaluator state machine
|
|
235
|
+
└── opcode/ # Per-opcode implementations
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### tests
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
tests/
|
|
242
|
+
├── lib/ # Native extension and evaluator tests
|
|
243
|
+
│ └── opcode/ # Opcode-specific tests
|
|
244
|
+
├── compile/ # Compiler and special-form tests
|
|
245
|
+
│ ├── helpers/
|
|
246
|
+
│ └── specials/
|
|
247
|
+
├── reader/ # Parser and layout tests
|
|
248
|
+
│ └── layouts/
|
|
249
|
+
├── dis/ # Disassembler tests
|
|
250
|
+
├── types/ # Type predicate tests
|
|
251
|
+
├── importer/ # Import hook tests
|
|
252
|
+
├── lexer/ # Lexer and prompt_toolkit tests
|
|
253
|
+
├── matcher/ # Matcher tests
|
|
254
|
+
├── syntax/ # Syntax form tests
|
|
255
|
+
├── hygiene/ # Hygiene tests
|
|
256
|
+
├── help/ # Help system tests
|
|
257
|
+
├── exceptions/ # Exception hierarchy tests
|
|
258
|
+
├── serialize/ # Serialization tests
|
|
259
|
+
├── cli/ # CLI tests
|
|
260
|
+
├── reproducers/ # Regression reproducers
|
|
261
|
+
├── extras/ # Optional integration tests (phase_extras)
|
|
262
|
+
│ ├── pygments/
|
|
263
|
+
│ ├── sphinx/
|
|
264
|
+
│ └── lsp/
|
|
265
|
+
└── native/ # C harness and container memory tests
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
## Design Documentation
|
|
270
|
+
|
|
271
|
+
Comprehensive design documentation lives in [design/](design/). Start with [design/README.md](design/README.md) for the index. Topics include language features (special forms, operators, macros, layouts), API and types, interpreter architecture (bytecode, compiler, evaluator), and call/CC design.
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
## Testing
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# Run Python tests (via tox)
|
|
278
|
+
make test
|
|
279
|
+
|
|
280
|
+
# Run native memory tests in container (requires podman or docker)
|
|
281
|
+
make test-native # Basic native tests
|
|
282
|
+
make test-asan # AddressSanitizer
|
|
283
|
+
make test-valgrind # Valgrind memcheck
|
|
284
|
+
|
|
285
|
+
# Run tests across Python versions in containers
|
|
286
|
+
make test-pyversions
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
## License
|
|
291
|
+
|
|
292
|
+
GPL v3 - See [LICENSE](LICENSE) for details.
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
## Author
|
|
296
|
+
|
|
297
|
+
Christopher O'Brien <obriencj@preoccupied.net>
|