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.
Files changed (433) hide show
  1. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/PKG-INFO +297 -0
  2. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/SOURCES.txt +432 -0
  3. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/dependency_links.txt +1 -0
  4. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/entry_points.txt +9 -0
  5. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/not-zip-safe +1 -0
  6. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/requires.txt +14 -0
  7. koskari-0.1.0.dev20260813/.eggs/koskari.egg-info/top_level.txt +1 -0
  8. koskari-0.1.0.dev20260813/LICENSE +674 -0
  9. koskari-0.1.0.dev20260813/MANIFEST.in +3 -0
  10. koskari-0.1.0.dev20260813/PKG-INFO +297 -0
  11. koskari-0.1.0.dev20260813/README.md +264 -0
  12. koskari-0.1.0.dev20260813/koskari/__init__.py +35 -0
  13. koskari-0.1.0.dev20260813/koskari/__main__.py +31 -0
  14. koskari-0.1.0.dev20260813/koskari/_version.py +38 -0
  15. koskari-0.1.0.dev20260813/koskari/asyncio.py +223 -0
  16. koskari-0.1.0.dev20260813/koskari/bootstrap/__init__.py +421 -0
  17. koskari-0.1.0.dev20260813/koskari/bootstrap/_assert.ki +70 -0
  18. koskari-0.1.0.dev20260813/koskari/bootstrap/_class.ki +79 -0
  19. koskari-0.1.0.dev20260813/koskari/bootstrap/_conditionals.ki +132 -0
  20. koskari-0.1.0.dev20260813/koskari/bootstrap/_decorator.ki +95 -0
  21. koskari-0.1.0.dev20260813/koskari/bootstrap/_define_syntax.ki +165 -0
  22. koskari-0.1.0.dev20260813/koskari/bootstrap/_fences.ki +38 -0
  23. koskari-0.1.0.dev20260813/koskari/bootstrap/_functions.ki +109 -0
  24. koskari-0.1.0.dev20260813/koskari/bootstrap/_help.ki +36 -0
  25. koskari-0.1.0.dev20260813/koskari/bootstrap/_iter.ki +223 -0
  26. koskari-0.1.0.dev20260813/koskari/bootstrap/_pairs.ki +95 -0
  27. koskari-0.1.0.dev20260813/koskari/bootstrap/_pragma.ki +106 -0
  28. koskari-0.1.0.dev20260813/koskari/bootstrap/_variables.ki +468 -0
  29. koskari-0.1.0.dev20260813/koskari/bootstrap/basics.ki +214 -0
  30. koskari-0.1.0.dev20260813/koskari/builtins.py +46 -0
  31. koskari-0.1.0.dev20260813/koskari/cli/__init__.py +81 -0
  32. koskari-0.1.0.dev20260813/koskari/cli/host.py +255 -0
  33. koskari-0.1.0.dev20260813/koskari/cli/launch.ki +334 -0
  34. koskari-0.1.0.dev20260813/koskari/cli/repl.ki +309 -0
  35. koskari-0.1.0.dev20260813/koskari/compile/__init__.py +32 -0
  36. koskari-0.1.0.dev20260813/koskari/compile/compiler.py +1656 -0
  37. koskari-0.1.0.dev20260813/koskari/compile/helpers.py +1247 -0
  38. koskari-0.1.0.dev20260813/koskari/compile/pragma/__init__.py +45 -0
  39. koskari-0.1.0.dev20260813/koskari/compile/pragma/resolution.py +420 -0
  40. koskari-0.1.0.dev20260813/koskari/compile/pragma/settings.py +279 -0
  41. koskari-0.1.0.dev20260813/koskari/compile/specials/__init__.py +252 -0
  42. koskari-0.1.0.dev20260813/koskari/compile/specials/begin.py +47 -0
  43. koskari-0.1.0.dev20260813/koskari/compile/specials/bytecode.py +72 -0
  44. koskari-0.1.0.dev20260813/koskari/compile/specials/call.py +358 -0
  45. koskari-0.1.0.dev20260813/koskari/compile/specials/class_.py +178 -0
  46. koskari-0.1.0.dev20260813/koskari/compile/specials/collections.py +192 -0
  47. koskari-0.1.0.dev20260813/koskari/compile/specials/conditionals.py +362 -0
  48. koskari-0.1.0.dev20260813/koskari/compile/specials/context.py +205 -0
  49. koskari-0.1.0.dev20260813/koskari/compile/specials/continuations.py +302 -0
  50. koskari-0.1.0.dev20260813/koskari/compile/specials/dyn_wind.py +185 -0
  51. koskari-0.1.0.dev20260813/koskari/compile/specials/exceptions.py +373 -0
  52. koskari-0.1.0.dev20260813/koskari/compile/specials/fence.py +116 -0
  53. koskari-0.1.0.dev20260813/koskari/compile/specials/imports.py +363 -0
  54. koskari-0.1.0.dev20260813/koskari/compile/specials/items.py +175 -0
  55. koskari-0.1.0.dev20260813/koskari/compile/specials/lambda_.py +215 -0
  56. koskari-0.1.0.dev20260813/koskari/compile/specials/let.py +169 -0
  57. koskari-0.1.0.dev20260813/koskari/compile/specials/loops.py +197 -0
  58. koskari-0.1.0.dev20260813/koskari/compile/specials/object.py +1072 -0
  59. koskari-0.1.0.dev20260813/koskari/compile/specials/pairs.py +143 -0
  60. koskari-0.1.0.dev20260813/koskari/compile/specials/quasiquote.py +412 -0
  61. koskari-0.1.0.dev20260813/koskari/compile/specials/refs.py +178 -0
  62. koskari-0.1.0.dev20260813/koskari/compile/specials/slots.py +162 -0
  63. koskari-0.1.0.dev20260813/koskari/compile/specials/syntax.py +552 -0
  64. koskari-0.1.0.dev20260813/koskari/compile/specials/thunk.py +154 -0
  65. koskari-0.1.0.dev20260813/koskari/compile/specials/variables.py +431 -0
  66. koskari-0.1.0.dev20260813/koskari/dis.ki +581 -0
  67. koskari-0.1.0.dev20260813/koskari/exceptions.py +816 -0
  68. koskari-0.1.0.dev20260813/koskari/extras/lsp/__init__.py +33 -0
  69. koskari-0.1.0.dev20260813/koskari/extras/lsp/handlers.py +207 -0
  70. koskari-0.1.0.dev20260813/koskari/extras/lsp/server.py +88 -0
  71. koskari-0.1.0.dev20260813/koskari/extras/lsp/utils.py +92 -0
  72. koskari-0.1.0.dev20260813/koskari/extras/pygments/__init__.py +83 -0
  73. koskari-0.1.0.dev20260813/koskari/extras/pygments/lexer.py +87 -0
  74. koskari-0.1.0.dev20260813/koskari/extras/setuptools/__init__.py +39 -0
  75. koskari-0.1.0.dev20260813/koskari/extras/setuptools/metadata.py +364 -0
  76. koskari-0.1.0.dev20260813/koskari/extras/setuptools/plugin.py +256 -0
  77. koskari-0.1.0.dev20260813/koskari/extras/sphinx/__init__.py +93 -0
  78. koskari-0.1.0.dev20260813/koskari/extras/sphinx/autodoc.py +266 -0
  79. koskari-0.1.0.dev20260813/koskari/extras/sphinx/builtins_directive.py +179 -0
  80. koskari-0.1.0.dev20260813/koskari/extras/sphinx/partition.py +268 -0
  81. koskari-0.1.0.dev20260813/koskari/extras/sphinx/rst.py +64 -0
  82. koskari-0.1.0.dev20260813/koskari/fences/__init__.py +48 -0
  83. koskari-0.1.0.dev20260813/koskari/fences/helpers.py +130 -0
  84. koskari-0.1.0.dev20260813/koskari/help/__init__.ki +41 -0
  85. koskari-0.1.0.dev20260813/koskari/help/layout.ki +57 -0
  86. koskari-0.1.0.dev20260813/koskari/help/syntax.ki +86 -0
  87. koskari-0.1.0.dev20260813/koskari/help/tools.ki +344 -0
  88. koskari-0.1.0.dev20260813/koskari/hygiene.py +774 -0
  89. koskari-0.1.0.dev20260813/koskari/importer.py +306 -0
  90. koskari-0.1.0.dev20260813/koskari/launcher.py +201 -0
  91. koskari-0.1.0.dev20260813/koskari/lexer/__init__.py +70 -0
  92. koskari-0.1.0.dev20260813/koskari/lexer/discovery.py +82 -0
  93. koskari-0.1.0.dev20260813/koskari/lexer/highlight.py +138 -0
  94. koskari-0.1.0.dev20260813/koskari/lexer/parser.py +126 -0
  95. koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/__init__.py +40 -0
  96. koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/completer.py +114 -0
  97. koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/key_bindings.py +134 -0
  98. koskari-0.1.0.dev20260813/koskari/lexer/prompt_toolkit/lexer.py +163 -0
  99. koskari-0.1.0.dev20260813/koskari/lexer/tokens.py +383 -0
  100. koskari-0.1.0.dev20260813/koskari/lib/arena.c +311 -0
  101. koskari-0.1.0.dev20260813/koskari/lib/arena.h +127 -0
  102. koskari-0.1.0.dev20260813/koskari/lib/async_loop.c +386 -0
  103. koskari-0.1.0.dev20260813/koskari/lib/async_loop.h +41 -0
  104. koskari-0.1.0.dev20260813/koskari/lib/atom.c +591 -0
  105. koskari-0.1.0.dev20260813/koskari/lib/atom.h +80 -0
  106. koskari-0.1.0.dev20260813/koskari/lib/bytecode.c +3618 -0
  107. koskari-0.1.0.dev20260813/koskari/lib/bytecode.h +749 -0
  108. koskari-0.1.0.dev20260813/koskari/lib/callable.c +160 -0
  109. koskari-0.1.0.dev20260813/koskari/lib/callable.h +140 -0
  110. koskari-0.1.0.dev20260813/koskari/lib/compat.c +294 -0
  111. koskari-0.1.0.dev20260813/koskari/lib/compat.h +226 -0
  112. koskari-0.1.0.dev20260813/koskari/lib/compat_310.h +24 -0
  113. koskari-0.1.0.dev20260813/koskari/lib/compat_311.h +87 -0
  114. koskari-0.1.0.dev20260813/koskari/lib/compat_312.h +79 -0
  115. koskari-0.1.0.dev20260813/koskari/lib/compat_313.h +80 -0
  116. koskari-0.1.0.dev20260813/koskari/lib/compat_314.h +83 -0
  117. koskari-0.1.0.dev20260813/koskari/lib/compat_39.h +50 -0
  118. koskari-0.1.0.dev20260813/koskari/lib/cont.c +468 -0
  119. koskari-0.1.0.dev20260813/koskari/lib/cont.h +94 -0
  120. koskari-0.1.0.dev20260813/koskari/lib/coro.c +603 -0
  121. koskari-0.1.0.dev20260813/koskari/lib/coro.h +95 -0
  122. koskari-0.1.0.dev20260813/koskari/lib/debug.h +68 -0
  123. koskari-0.1.0.dev20260813/koskari/lib/defer.c +737 -0
  124. koskari-0.1.0.dev20260813/koskari/lib/defer.h +97 -0
  125. koskari-0.1.0.dev20260813/koskari/lib/demand.c +1467 -0
  126. koskari-0.1.0.dev20260813/koskari/lib/demand.h +93 -0
  127. koskari-0.1.0.dev20260813/koskari/lib/domain.c +746 -0
  128. koskari-0.1.0.dev20260813/koskari/lib/domain.h +124 -0
  129. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_boundary.c +194 -0
  130. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_cc.c +109 -0
  131. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_cc_raise.c +84 -0
  132. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_collect.c +144 -0
  133. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_delim.c +207 -0
  134. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_finally.c +137 -0
  135. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_foreach.c +213 -0
  136. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_frame.c +287 -0
  137. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_gen.c +368 -0
  138. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_loop.c +130 -0
  139. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_next.c +197 -0
  140. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_ns.c +119 -0
  141. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_param.c +315 -0
  142. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_prompt.c +163 -0
  143. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_shift.c +87 -0
  144. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_try.c +121 -0
  145. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_walk.c +798 -0
  146. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_wind.c +374 -0
  147. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_with.c +678 -0
  148. koskari-0.1.0.dev20260813/koskari/lib/dynchain/dyn_yield_from.c +334 -0
  149. koskari-0.1.0.dev20260813/koskari/lib/dynchain/xfer_plan.c +1802 -0
  150. koskari-0.1.0.dev20260813/koskari/lib/dynchain.c +2790 -0
  151. koskari-0.1.0.dev20260813/koskari/lib/dynchain.h +2462 -0
  152. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_cache.c +816 -0
  153. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_chain.c +476 -0
  154. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_gil.c +193 -0
  155. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_obj.c +263 -0
  156. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_state.c +274 -0
  157. koskari-0.1.0.dev20260813/koskari/lib/eval/eval_utils.c +1094 -0
  158. koskari-0.1.0.dev20260813/koskari/lib/eval.c +2843 -0
  159. koskari-0.1.0.dev20260813/koskari/lib/eval.h +841 -0
  160. koskari-0.1.0.dev20260813/koskari/lib/formals.c +1850 -0
  161. koskari-0.1.0.dev20260813/koskari/lib/formals.h +202 -0
  162. koskari-0.1.0.dev20260813/koskari/lib/func.c +2339 -0
  163. koskari-0.1.0.dev20260813/koskari/lib/func.h +341 -0
  164. koskari-0.1.0.dev20260813/koskari/lib/handlers.incl +198 -0
  165. koskari-0.1.0.dev20260813/koskari/lib/hints.h +83 -0
  166. koskari-0.1.0.dev20260813/koskari/lib/iter.c +986 -0
  167. koskari-0.1.0.dev20260813/koskari/lib/iter.h +124 -0
  168. koskari-0.1.0.dev20260813/koskari/lib/lib.c +235 -0
  169. koskari-0.1.0.dev20260813/koskari/lib/lib.h +126 -0
  170. koskari-0.1.0.dev20260813/koskari/lib/matcher/datum.c +506 -0
  171. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_app.c +48 -0
  172. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_capture.c +114 -0
  173. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_class.c +251 -0
  174. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_form.c +97 -0
  175. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_group.c +74 -0
  176. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_map.c +123 -0
  177. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_match.c +49 -0
  178. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_not.c +20 -0
  179. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_oneof.c +53 -0
  180. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_optional.c +33 -0
  181. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_repeat.c +206 -0
  182. koskari-0.1.0.dev20260813/koskari/lib/matcher/match_rest.c +56 -0
  183. koskari-0.1.0.dev20260813/koskari/lib/matcher/subject.c +262 -0
  184. koskari-0.1.0.dev20260813/koskari/lib/matcher/thaw.c +579 -0
  185. koskari-0.1.0.dev20260813/koskari/lib/matcher/validate.c +809 -0
  186. koskari-0.1.0.dev20260813/koskari/lib/matcher.c +2379 -0
  187. koskari-0.1.0.dev20260813/koskari/lib/matcher.h +663 -0
  188. koskari-0.1.0.dev20260813/koskari/lib/namespace.c +2703 -0
  189. koskari-0.1.0.dev20260813/koskari/lib/namespace.h +535 -0
  190. koskari-0.1.0.dev20260813/koskari/lib/object.c +673 -0
  191. koskari-0.1.0.dev20260813/koskari/lib/object.h +86 -0
  192. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR.c +35 -0
  193. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_CLEAR.c +35 -0
  194. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_INPLACE.c +53 -0
  195. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_REF.c +35 -0
  196. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_STORE.c +41 -0
  197. koskari-0.1.0.dev20260813/koskari/lib/opcode/ATTR_TAKE.c +46 -0
  198. koskari-0.1.0.dev20260813/koskari/lib/opcode/AWAIT.c +44 -0
  199. koskari-0.1.0.dev20260813/koskari/lib/opcode/BREAK.c +60 -0
  200. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_ARGS.c +39 -0
  201. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_CLASS.c +92 -0
  202. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_FUNCTION.c +95 -0
  203. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_KWDS.c +39 -0
  204. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_KWDS_NAMES.c +50 -0
  205. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST.c +42 -0
  206. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_APPEND.c +48 -0
  207. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_APPEND_CONST.c +48 -0
  208. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_CONST.c +38 -0
  209. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_EXTEND.c +56 -0
  210. koskari-0.1.0.dev20260813/koskari/lib/opcode/BUILD_LIST_EXTEND_CONST.c +73 -0
  211. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL.c +37 -0
  212. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR.c +63 -0
  213. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR_NAMES.c +80 -0
  214. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_ATTR_STAR.c +166 -0
  215. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST.c +50 -0
  216. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR.c +75 -0
  217. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR_NAMES.c +90 -0
  218. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_ATTR_STAR.c +143 -0
  219. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_NAMES.c +68 -0
  220. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_FAST_STAR.c +116 -0
  221. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_NAMES.c +60 -0
  222. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_STAR.c +120 -0
  223. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR.c +54 -0
  224. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR.c +73 -0
  225. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR_NAMES.c +93 -0
  226. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_ATTR_STAR.c +162 -0
  227. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_NAMES.c +69 -0
  228. koskari-0.1.0.dev20260813/koskari/lib/opcode/CALL_VAR_STAR.c +118 -0
  229. koskari-0.1.0.dev20260813/koskari/lib/opcode/CAPTURE_CC.c +35 -0
  230. koskari-0.1.0.dev20260813/koskari/lib/opcode/CAR.c +54 -0
  231. koskari-0.1.0.dev20260813/koskari/lib/opcode/CDR.c +54 -0
  232. koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE.c +50 -0
  233. koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE_FAST.c +68 -0
  234. koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_COMPARE_VAR.c +69 -0
  235. koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_EXCEPTION.c +48 -0
  236. koskari-0.1.0.dev20260813/koskari/lib/opcode/CHECK_NIL.c +26 -0
  237. koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_FINALLY.c +33 -0
  238. koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_FOREACH.c +38 -0
  239. koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_LOOP.c +38 -0
  240. koskari-0.1.0.dev20260813/koskari/lib/opcode/CLEAR_TRY.c +32 -0
  241. koskari-0.1.0.dev20260813/koskari/lib/opcode/COMBINE_ARGS.c +96 -0
  242. koskari-0.1.0.dev20260813/koskari/lib/opcode/COMBINE_KWDS.c +65 -0
  243. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONS.c +47 -0
  244. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST.c +32 -0
  245. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM.c +38 -0
  246. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_CLEAR.c +38 -0
  247. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_REF.c +39 -0
  248. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_STORE.c +45 -0
  249. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONST_ITEM_TAKE.c +47 -0
  250. koskari-0.1.0.dev20260813/koskari/lib/opcode/CONTINUE.c +60 -0
  251. koskari-0.1.0.dev20260813/koskari/lib/opcode/DEREF.c +36 -0
  252. koskari-0.1.0.dev20260813/koskari/lib/opcode/DUP.c +35 -0
  253. koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION.c +40 -0
  254. koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION_CLEAR.c +28 -0
  255. koskari-0.1.0.dev20260813/koskari/lib/opcode/EXCEPTION_MATCH.c +48 -0
  256. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST.c +31 -0
  257. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST2.c +46 -0
  258. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST4.c +52 -0
  259. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR.c +66 -0
  260. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_CLEAR.c +41 -0
  261. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_INPLACE.c +65 -0
  262. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_REF.c +41 -0
  263. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_STORE.c +73 -0
  264. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ATTR_TAKE.c +54 -0
  265. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_BIND.c +43 -0
  266. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_CLEAR.c +29 -0
  267. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_INPLACE.c +36 -0
  268. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_INPLACE_CONST.c +52 -0
  269. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_ITER.c +38 -0
  270. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_LIST_APPEND.c +57 -0
  271. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_NEXT.c +53 -0
  272. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_REF.c +32 -0
  273. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_STORE.c +39 -0
  274. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_STORE_CONST.c +41 -0
  275. koskari-0.1.0.dev20260813/koskari/lib/opcode/FAST_TAKE.c +33 -0
  276. koskari-0.1.0.dev20260813/koskari/lib/opcode/GLOBALS.c +28 -0
  277. koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT.c +58 -0
  278. koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT_FROM.c +122 -0
  279. koskari-0.1.0.dev20260813/koskari/lib/opcode/IMPORT_STAR.c +134 -0
  280. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM.c +42 -0
  281. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_CLEAR.c +38 -0
  282. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_REF.c +38 -0
  283. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_STORE.c +39 -0
  284. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITEM_TAKE.c +50 -0
  285. koskari-0.1.0.dev20260813/koskari/lib/opcode/ITER_NEXT.c +102 -0
  286. koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP.c +26 -0
  287. koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_AND.c +49 -0
  288. koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_FALSE.c +38 -0
  289. koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_OR.c +49 -0
  290. koskari-0.1.0.dev20260813/koskari/lib/opcode/JUMP_TRUE.c +38 -0
  291. koskari-0.1.0.dev20260813/koskari/lib/opcode/LABEL.c +26 -0
  292. koskari-0.1.0.dev20260813/koskari/lib/opcode/LOCALS.c +28 -0
  293. koskari-0.1.0.dev20260813/koskari/lib/opcode/MATCH_CASE.c +125 -0
  294. koskari-0.1.0.dev20260813/koskari/lib/opcode/MATCH_STORE_NAMES.c +59 -0
  295. koskari-0.1.0.dev20260813/koskari/lib/opcode/NILP.c +32 -0
  296. koskari-0.1.0.dev20260813/koskari/lib/opcode/NOOP.c +26 -0
  297. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_BIT_INVERT.c +30 -0
  298. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE.c +47 -0
  299. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE_FAST.c +46 -0
  300. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_COMPARE_VAR.c +46 -0
  301. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_DIR.c +30 -0
  302. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_DIVMOD.c +36 -0
  303. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_FORMAT.c +56 -0
  304. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_FORMAT_CONST.c +42 -0
  305. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_INPLACE.c +35 -0
  306. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_ITER.c +33 -0
  307. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_LEN.c +38 -0
  308. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_NEXT.c +174 -0
  309. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_NOT.c +32 -0
  310. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_OPERAND.c +34 -0
  311. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_REPR.c +33 -0
  312. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_STR.c +26 -0
  313. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_TRUTH.c +32 -0
  314. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_TYPE.c +33 -0
  315. koskari-0.1.0.dev20260813/koskari/lib/opcode/OBJECT_VARS.c +38 -0
  316. koskari-0.1.0.dev20260813/koskari/lib/opcode/PAIR_SPLICE.c +127 -0
  317. koskari-0.1.0.dev20260813/koskari/lib/opcode/PARAM.c +56 -0
  318. koskari-0.1.0.dev20260813/koskari/lib/opcode/PARAM_CONST.c +46 -0
  319. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP.c +33 -0
  320. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_CC.c +33 -0
  321. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_COLLECT.c +38 -0
  322. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_DYN_WITH.c +67 -0
  323. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_FINALLY.c +72 -0
  324. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_FOREACH.c +47 -0
  325. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_LOOP.c +44 -0
  326. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_NS.c +30 -0
  327. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_PARAM.c +30 -0
  328. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_PROMPT.c +113 -0
  329. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_SHIFT.c +135 -0
  330. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_TRY.c +44 -0
  331. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_WIND.c +51 -0
  332. koskari-0.1.0.dev20260813/koskari/lib/opcode/POP_WITH.c +69 -0
  333. koskari-0.1.0.dev20260813/koskari/lib/opcode/POSITION.c +26 -0
  334. koskari-0.1.0.dev20260813/koskari/lib/opcode/PROPER.c +49 -0
  335. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_CC.c +43 -0
  336. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_COLLECT.c +54 -0
  337. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_DYN_WITH.c +85 -0
  338. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_FINALLY.c +31 -0
  339. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_FOREACH.c +74 -0
  340. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_LOOP.c +54 -0
  341. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_NS.c +122 -0
  342. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_PARAM.c +42 -0
  343. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_PROMPT.c +54 -0
  344. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_SHIFT.c +70 -0
  345. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_TRY.c +31 -0
  346. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_WIND.c +89 -0
  347. koskari-0.1.0.dev20260813/koskari/lib/opcode/PUSH_WITH.c +93 -0
  348. koskari-0.1.0.dev20260813/koskari/lib/opcode/RAISE.c +69 -0
  349. koskari-0.1.0.dev20260813/koskari/lib/opcode/RETURN.c +66 -0
  350. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ.c +43 -0
  351. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_CONST.c +49 -0
  352. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_FAST.c +55 -0
  353. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_FAST_ATTR.c +64 -0
  354. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_VAR.c +56 -0
  355. koskari-0.1.0.dev20260813/koskari/lib/opcode/SWITCH_EQ_VAR_ATTR.c +63 -0
  356. koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL.c +41 -0
  357. koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL_NAMES.c +59 -0
  358. koskari-0.1.0.dev20260813/koskari/lib/opcode/TAIL_CALL_STAR.c +121 -0
  359. koskari-0.1.0.dev20260813/koskari/lib/opcode/THEEND.c +33 -0
  360. koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK.c +57 -0
  361. koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_FAST.c +66 -0
  362. koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_STAR.c +95 -0
  363. koskari-0.1.0.dev20260813/koskari/lib/opcode/UNPACK_VAR.c +65 -0
  364. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR.c +34 -0
  365. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR2.c +53 -0
  366. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR4.c +52 -0
  367. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR.c +64 -0
  368. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_CLEAR.c +39 -0
  369. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_INPLACE.c +63 -0
  370. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_REF.c +39 -0
  371. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_STORE.c +71 -0
  372. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ATTR_TAKE.c +51 -0
  373. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_BIND.c +38 -0
  374. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_CLEAR.c +30 -0
  375. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_INPLACE.c +38 -0
  376. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_INPLACE_CONST.c +53 -0
  377. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_ITER.c +39 -0
  378. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_LIST_APPEND.c +57 -0
  379. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_NEXT.c +54 -0
  380. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_REF.c +32 -0
  381. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_STORE.c +37 -0
  382. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_STORE_CONST.c +39 -0
  383. koskari-0.1.0.dev20260813/koskari/lib/opcode/VAR_TAKE.c +34 -0
  384. koskari-0.1.0.dev20260813/koskari/lib/opcode/YIELD.c +53 -0
  385. koskari-0.1.0.dev20260813/koskari/lib/opcode/YIELD_FROM.c +753 -0
  386. koskari-0.1.0.dev20260813/koskari/lib/opcodes.incl +326 -0
  387. koskari-0.1.0.dev20260813/koskari/lib/operator.c +1059 -0
  388. koskari-0.1.0.dev20260813/koskari/lib/operator.h +203 -0
  389. koskari-0.1.0.dev20260813/koskari/lib/pair.c +2387 -0
  390. koskari-0.1.0.dev20260813/koskari/lib/pair.h +168 -0
  391. koskari-0.1.0.dev20260813/koskari/lib/parse.c +818 -0
  392. koskari-0.1.0.dev20260813/koskari/lib/parse.h +106 -0
  393. koskari-0.1.0.dev20260813/koskari/lib/partial.c +688 -0
  394. koskari-0.1.0.dev20260813/koskari/lib/partial.h +51 -0
  395. koskari-0.1.0.dev20260813/koskari/lib/property.c +239 -0
  396. koskari-0.1.0.dev20260813/koskari/lib/property.h +38 -0
  397. koskari-0.1.0.dev20260813/koskari/lib/ref.c +1770 -0
  398. koskari-0.1.0.dev20260813/koskari/lib/ref.h +290 -0
  399. koskari-0.1.0.dev20260813/koskari/lib/stack.c +1901 -0
  400. koskari-0.1.0.dev20260813/koskari/lib/stack.h +728 -0
  401. koskari-0.1.0.dev20260813/koskari/lib/tracing.c +1120 -0
  402. koskari-0.1.0.dev20260813/koskari/lib/tracing.h +251 -0
  403. koskari-0.1.0.dev20260813/koskari/lib/utils.c +1680 -0
  404. koskari-0.1.0.dev20260813/koskari/lib/utils.h +295 -0
  405. koskari-0.1.0.dev20260813/koskari/lib/values.c +843 -0
  406. koskari-0.1.0.dev20260813/koskari/lib/values.h +76 -0
  407. koskari-0.1.0.dev20260813/koskari/matcher.py +4051 -0
  408. koskari-0.1.0.dev20260813/koskari/module.py +506 -0
  409. koskari-0.1.0.dev20260813/koskari/pragma.py +273 -0
  410. koskari-0.1.0.dev20260813/koskari/reader/__init__.py +61 -0
  411. koskari-0.1.0.dev20260813/koskari/reader/layouts/__init__.py +203 -0
  412. koskari-0.1.0.dev20260813/koskari/reader/layouts/basics.py +230 -0
  413. koskari-0.1.0.dev20260813/koskari/reader/layouts/classes.py +102 -0
  414. koskari-0.1.0.dev20260813/koskari/reader/layouts/conditionals.py +341 -0
  415. koskari-0.1.0.dev20260813/koskari/reader/layouts/define_syntax.py +260 -0
  416. koskari-0.1.0.dev20260813/koskari/reader/layouts/dyn_wind.py +102 -0
  417. koskari-0.1.0.dev20260813/koskari/reader/layouts/exceptions.py +131 -0
  418. koskari-0.1.0.dev20260813/koskari/reader/layouts/helpers.py +136 -0
  419. koskari-0.1.0.dev20260813/koskari/reader/layouts/loops.py +100 -0
  420. koskari-0.1.0.dev20260813/koskari/reader/parser.py +3843 -0
  421. koskari-0.1.0.dev20260813/koskari/reader/patterns.py +64 -0
  422. koskari-0.1.0.dev20260813/koskari/reader/pragma.py +126 -0
  423. koskari-0.1.0.dev20260813/koskari/serialize/__init__.py +42 -0
  424. koskari-0.1.0.dev20260813/koskari/serialize/codex.py +1036 -0
  425. koskari-0.1.0.dev20260813/koskari/serialize/constants.py +37 -0
  426. koskari-0.1.0.dev20260813/koskari/serialize/incremental.py +140 -0
  427. koskari-0.1.0.dev20260813/koskari/solve.ki +146 -0
  428. koskari-0.1.0.dev20260813/koskari/syntax.py +691 -0
  429. koskari-0.1.0.dev20260813/koskari/types.py +223 -0
  430. koskari-0.1.0.dev20260813/koskari.pth +1 -0
  431. koskari-0.1.0.dev20260813/pyproject.toml +10 -0
  432. koskari-0.1.0.dev20260813/setup.cfg +329 -0
  433. 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>