freelang-v4 4.3.0

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 (261) hide show
  1. package/README.md +548 -0
  2. package/dist/ast.d.ts +367 -0
  3. package/dist/ast.js +4 -0
  4. package/dist/ast.js.map +1 -0
  5. package/dist/async-basic.test.d.ts +1 -0
  6. package/dist/async-basic.test.js +88 -0
  7. package/dist/async-basic.test.js.map +1 -0
  8. package/dist/async-jest.test.d.ts +1 -0
  9. package/dist/async-jest.test.js +99 -0
  10. package/dist/async-jest.test.js.map +1 -0
  11. package/dist/channel-jest.test.d.ts +1 -0
  12. package/dist/channel-jest.test.js +148 -0
  13. package/dist/channel-jest.test.js.map +1 -0
  14. package/dist/checker-jest.test.d.ts +1 -0
  15. package/dist/checker-jest.test.js +160 -0
  16. package/dist/checker-jest.test.js.map +1 -0
  17. package/dist/checker.d.ts +149 -0
  18. package/dist/checker.js +1565 -0
  19. package/dist/checker.js.map +1 -0
  20. package/dist/checker.test.d.ts +1 -0
  21. package/dist/checker.test.js +217 -0
  22. package/dist/checker.test.js.map +1 -0
  23. package/dist/compiler-jest.test.d.ts +1 -0
  24. package/dist/compiler-jest.test.js +233 -0
  25. package/dist/compiler-jest.test.js.map +1 -0
  26. package/dist/compiler.d.ts +127 -0
  27. package/dist/compiler.js +1588 -0
  28. package/dist/compiler.js.map +1 -0
  29. package/dist/compiler.test.d.ts +1 -0
  30. package/dist/compiler.test.js +313 -0
  31. package/dist/compiler.test.js.map +1 -0
  32. package/dist/db-100m-full.d.ts +5 -0
  33. package/dist/db-100m-full.js +78 -0
  34. package/dist/db-100m-full.js.map +1 -0
  35. package/dist/db-100m-no-index.d.ts +12 -0
  36. package/dist/db-100m-no-index.js +119 -0
  37. package/dist/db-100m-no-index.js.map +1 -0
  38. package/dist/db-100m-real.d.ts +5 -0
  39. package/dist/db-100m-real.js +131 -0
  40. package/dist/db-100m-real.js.map +1 -0
  41. package/dist/db-100m-streaming.d.ts +15 -0
  42. package/dist/db-100m-streaming.js +164 -0
  43. package/dist/db-100m-streaming.js.map +1 -0
  44. package/dist/db-100m-test.d.ts +5 -0
  45. package/dist/db-100m-test.js +111 -0
  46. package/dist/db-100m-test.js.map +1 -0
  47. package/dist/db-jest.test.d.ts +1 -0
  48. package/dist/db-jest.test.js +182 -0
  49. package/dist/db-jest.test.js.map +1 -0
  50. package/dist/db-runtime.d.ts +24 -0
  51. package/dist/db-runtime.js +204 -0
  52. package/dist/db-runtime.js.map +1 -0
  53. package/dist/db.d.ts +249 -0
  54. package/dist/db.js +593 -0
  55. package/dist/db.js.map +1 -0
  56. package/dist/file-io-jest.test.d.ts +1 -0
  57. package/dist/file-io-jest.test.js +225 -0
  58. package/dist/file-io-jest.test.js.map +1 -0
  59. package/dist/for-of-jest.test.d.ts +1 -0
  60. package/dist/for-of-jest.test.js +230 -0
  61. package/dist/for-of-jest.test.js.map +1 -0
  62. package/dist/for-of.test.d.ts +1 -0
  63. package/dist/for-of.test.js +305 -0
  64. package/dist/for-of.test.js.map +1 -0
  65. package/dist/function-literal-jest.test.d.ts +1 -0
  66. package/dist/function-literal-jest.test.js +180 -0
  67. package/dist/function-literal-jest.test.js.map +1 -0
  68. package/dist/function-literal.test.d.ts +1 -0
  69. package/dist/function-literal.test.js +245 -0
  70. package/dist/function-literal.test.js.map +1 -0
  71. package/dist/generics-jest.test.d.ts +1 -0
  72. package/dist/generics-jest.test.js +93 -0
  73. package/dist/generics-jest.test.js.map +1 -0
  74. package/dist/ir-gen.d.ts +15 -0
  75. package/dist/ir-gen.js +400 -0
  76. package/dist/ir-gen.js.map +1 -0
  77. package/dist/ir.d.ts +114 -0
  78. package/dist/ir.js +5 -0
  79. package/dist/ir.js.map +1 -0
  80. package/dist/lexer.d.ts +110 -0
  81. package/dist/lexer.js +467 -0
  82. package/dist/lexer.js.map +1 -0
  83. package/dist/lexer.test.d.ts +1 -0
  84. package/dist/lexer.test.js +426 -0
  85. package/dist/lexer.test.js.map +1 -0
  86. package/dist/main.d.ts +2 -0
  87. package/dist/main.js +241 -0
  88. package/dist/main.js.map +1 -0
  89. package/dist/module-jest.test.d.ts +1 -0
  90. package/dist/module-jest.test.js +123 -0
  91. package/dist/module-jest.test.js.map +1 -0
  92. package/dist/parser.d.ts +56 -0
  93. package/dist/parser.js +1060 -0
  94. package/dist/parser.js.map +1 -0
  95. package/dist/parser.test.d.ts +1 -0
  96. package/dist/parser.test.js +461 -0
  97. package/dist/parser.test.js.map +1 -0
  98. package/dist/pattern-matching-jest.test.d.ts +1 -0
  99. package/dist/pattern-matching-jest.test.js +158 -0
  100. package/dist/pattern-matching-jest.test.js.map +1 -0
  101. package/dist/pkg/init.d.ts +1 -0
  102. package/dist/pkg/init.js +118 -0
  103. package/dist/pkg/init.js.map +1 -0
  104. package/dist/pkg/install.d.ts +1 -0
  105. package/dist/pkg/install.js +77 -0
  106. package/dist/pkg/install.js.map +1 -0
  107. package/dist/pkg/registry.d.ts +23 -0
  108. package/dist/pkg/registry.js +106 -0
  109. package/dist/pkg/registry.js.map +1 -0
  110. package/dist/pkg/run.d.ts +1 -0
  111. package/dist/pkg/run.js +76 -0
  112. package/dist/pkg/run.js.map +1 -0
  113. package/dist/pkg/toml.d.ts +5 -0
  114. package/dist/pkg/toml.js +117 -0
  115. package/dist/pkg/toml.js.map +1 -0
  116. package/dist/repl.d.ts +15 -0
  117. package/dist/repl.js +197 -0
  118. package/dist/repl.js.map +1 -0
  119. package/dist/runtime/bytecode.d.ts +92 -0
  120. package/dist/runtime/bytecode.js +253 -0
  121. package/dist/runtime/bytecode.js.map +1 -0
  122. package/dist/runtime/value.d.ts +102 -0
  123. package/dist/runtime/value.js +302 -0
  124. package/dist/runtime/value.js.map +1 -0
  125. package/dist/runtime/vm.d.ts +65 -0
  126. package/dist/runtime/vm.js +293 -0
  127. package/dist/runtime/vm.js.map +1 -0
  128. package/dist/struct-instance-jest.test.d.ts +1 -0
  129. package/dist/struct-instance-jest.test.js +209 -0
  130. package/dist/struct-instance-jest.test.js.map +1 -0
  131. package/dist/struct-instance.test.d.ts +1 -0
  132. package/dist/struct-instance.test.js +291 -0
  133. package/dist/struct-instance.test.js.map +1 -0
  134. package/dist/struct-jest.test.d.ts +1 -0
  135. package/dist/struct-jest.test.js +176 -0
  136. package/dist/struct-jest.test.js.map +1 -0
  137. package/dist/struct.test.d.ts +1 -0
  138. package/dist/struct.test.js +231 -0
  139. package/dist/struct.test.js.map +1 -0
  140. package/dist/trait-jest.test.d.ts +1 -0
  141. package/dist/trait-jest.test.js +120 -0
  142. package/dist/trait-jest.test.js.map +1 -0
  143. package/dist/vm-jest.test.d.ts +1 -0
  144. package/dist/vm-jest.test.js +569 -0
  145. package/dist/vm-jest.test.js.map +1 -0
  146. package/dist/vm.d.ts +81 -0
  147. package/dist/vm.js +1956 -0
  148. package/dist/vm.js.map +1 -0
  149. package/dist/vm.test.d.ts +1 -0
  150. package/dist/vm.test.js +337 -0
  151. package/dist/vm.test.js.map +1 -0
  152. package/dist/web-repl/sandbox.d.ts +11 -0
  153. package/dist/web-repl/sandbox.js +76 -0
  154. package/dist/web-repl/sandbox.js.map +1 -0
  155. package/dist/web-repl/server.d.ts +1 -0
  156. package/dist/web-repl/server.js +111 -0
  157. package/dist/web-repl/server.js.map +1 -0
  158. package/dist/while-loop-jest.test.d.ts +1 -0
  159. package/dist/while-loop-jest.test.js +201 -0
  160. package/dist/while-loop-jest.test.js.map +1 -0
  161. package/dist/while-loop.test.d.ts +1 -0
  162. package/dist/while-loop.test.js +262 -0
  163. package/dist/while-loop.test.js.map +1 -0
  164. package/docs/EXPERIENCE.md +787 -0
  165. package/docs/README.md +175 -0
  166. package/docs/V1_V2_V3_ANALYSIS.md +107 -0
  167. package/docs/_config.yml +36 -0
  168. package/docs/api-reference.md +459 -0
  169. package/docs/architecture.md +470 -0
  170. package/docs/benchmarks.md +295 -0
  171. package/docs/comparison.md +454 -0
  172. package/docs/index.md +335 -0
  173. package/docs/language-completeness.md +228 -0
  174. package/docs/learning-guide.md +651 -0
  175. package/package.json +65 -0
  176. package/src/api/deploy_key.fl +294 -0
  177. package/src/api/issue.fl +302 -0
  178. package/src/api/org.fl +356 -0
  179. package/src/api/repo.fl +394 -0
  180. package/src/api/team.fl +299 -0
  181. package/src/api/user.fl +385 -0
  182. package/src/api/webhook.fl +273 -0
  183. package/src/ast.ts +158 -0
  184. package/src/async-basic.test.ts +94 -0
  185. package/src/async-jest.test.ts +107 -0
  186. package/src/channel-jest.test.ts +158 -0
  187. package/src/checker-jest.test.ts +189 -0
  188. package/src/checker.test.ts +279 -0
  189. package/src/checker.ts +1861 -0
  190. package/src/commands/analyze.fl +227 -0
  191. package/src/commands/auth.fl +315 -0
  192. package/src/commands/batch.fl +349 -0
  193. package/src/commands/config.fl +199 -0
  194. package/src/commands/deploy_key.fl +352 -0
  195. package/src/commands/issue.fl +275 -0
  196. package/src/commands/main.fl +492 -0
  197. package/src/commands/org.fl +425 -0
  198. package/src/commands/repo.fl +581 -0
  199. package/src/commands/team.fl +244 -0
  200. package/src/commands/user.fl +423 -0
  201. package/src/commands/webhook.fl +400 -0
  202. package/src/compiler-jest.test.ts +275 -0
  203. package/src/compiler.test.ts +375 -0
  204. package/src/compiler.ts +1770 -0
  205. package/src/config.fl +175 -0
  206. package/src/core/batch.fl +355 -0
  207. package/src/core/cache.fl +284 -0
  208. package/src/core/ensure.fl +324 -0
  209. package/src/db-100m-full.ts +96 -0
  210. package/src/db-100m-no-index.ts +133 -0
  211. package/src/db-100m-real.ts +152 -0
  212. package/src/db-100m-streaming.ts +154 -0
  213. package/src/db-100m-test.ts +136 -0
  214. package/src/db-jest.test.ts +161 -0
  215. package/src/db-runtime.ts +242 -0
  216. package/src/db.ts +676 -0
  217. package/src/errors.fl +134 -0
  218. package/src/for-of-jest.test.ts +246 -0
  219. package/src/for-of.test.ts +308 -0
  220. package/src/function-literal-jest.test.ts +193 -0
  221. package/src/function-literal.test.ts +248 -0
  222. package/src/generics-jest.test.ts +104 -0
  223. package/src/http/client.fl +327 -0
  224. package/src/ir-gen.ts +459 -0
  225. package/src/ir.ts +80 -0
  226. package/src/lexer.test.ts +499 -0
  227. package/src/lexer.ts +522 -0
  228. package/src/main.ts +223 -0
  229. package/src/models.fl +162 -0
  230. package/src/module-jest.test.ts +145 -0
  231. package/src/parser.test.ts +542 -0
  232. package/src/parser.ts +1211 -0
  233. package/src/pattern-matching-jest.test.ts +170 -0
  234. package/src/pkg/init.ts +91 -0
  235. package/src/pkg/install.ts +56 -0
  236. package/src/pkg/registry.ts +103 -0
  237. package/src/pkg/run.ts +49 -0
  238. package/src/pkg/toml.ts +129 -0
  239. package/src/repl.ts +190 -0
  240. package/src/runtime/bytecode.ts +291 -0
  241. package/src/runtime/value.ts +322 -0
  242. package/src/runtime/vm.ts +354 -0
  243. package/src/self-host/bootstrap.fl +68 -0
  244. package/src/self-host/interpreter.fl +361 -0
  245. package/src/self-host/lexer-simple.fl +22 -0
  246. package/src/self-host/lexer.fl +305 -0
  247. package/src/self-host/parser.fl +580 -0
  248. package/src/struct-instance-jest.test.ts +221 -0
  249. package/src/struct-instance.test.ts +293 -0
  250. package/src/struct-jest.test.ts +187 -0
  251. package/src/struct.test.ts +234 -0
  252. package/src/trait-jest.test.ts +136 -0
  253. package/src/vm-jest.test.ts +754 -0
  254. package/src/vm.ts +1976 -0
  255. package/src/web-repl/public/index.html +50 -0
  256. package/src/web-repl/public/main.js +105 -0
  257. package/src/web-repl/public/style.css +225 -0
  258. package/src/web-repl/sandbox.ts +88 -0
  259. package/src/web-repl/server.ts +97 -0
  260. package/src/while-loop-jest.test.ts +218 -0
  261. package/src/while-loop.test.ts +267 -0
package/docs/README.md ADDED
@@ -0,0 +1,175 @@
1
+ # ๐ŸŒ FreeLang v4
2
+
3
+ **AI-First ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด**
4
+
5
+ > ์™„์ „ํ•œ ๊ตฌํ˜„ + ์„ฑ๋Šฅ ์ค‘์‹ฌ + ํ™•์žฅ์„ฑ ๋†’์Œ
6
+
7
+ ---
8
+
9
+ ## ๐ŸŽฏ ์†Œ๊ฐœ
10
+
11
+ FreeLang v4๋Š” **์ •์  ํƒ€์ž… ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด**๋กœ์„œ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
12
+
13
+ - โœ… **์™„์ „ํ•œ ๊ตฌํ˜„**: Lexer โ†’ Parser โ†’ Compiler โ†’ VM
14
+ - โœ… **AI-First ์„ค๊ณ„**: LLM ํ†ตํ•ฉ ๊ธฐ๋ฐ˜ ์–ธ์–ด
15
+ - โœ… **์„ฑ๋Šฅ ์ค‘์‹ฌ**: ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ, ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”
16
+ - โœ… **ํ”„๋กœ๋•์…˜ ์ค€๋น„**: 82.6% ์™„์„ฑ๋„, 95.4% ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
17
+
18
+ ---
19
+
20
+ ## ๐Ÿ“š ๋ฌธ์„œ
21
+
22
+ | ๋ฌธ์„œ | ์„ค๋ช… |
23
+ |------|------|
24
+ | ๐Ÿ“– [**ํ•™์Šต ๊ฐ€์ด๋“œ**](learning-guide.md) | 10๋‹จ๊ณ„ ์ปค๋ฆฌํ˜๋Ÿผ (์ดˆ๊ธ‰โ†’๊ณ ๊ธ‰) |
25
+ | ๐Ÿ“š [**API ๋ ˆํผ๋Ÿฐ์Šค**](api-reference.md) | 42๊ฐœ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜ |
26
+ | ๐ŸŒ [**์–ธ์–ด ๋น„๊ต**](comparison.md) | Python, JavaScript, Go, Rust์™€ ๋น„๊ต |
27
+ | ๐Ÿ“Š [**์™„์„ฑ๋„ ํ‰๊ฐ€**](language-completeness.md) | 82.6% ์ข…ํ•ฉ ํ‰๊ฐ€ |
28
+ | ๐Ÿ“ˆ [**์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ**](benchmarks.md) | 4,420 ops ์ธก์ • ๊ฒฐ๊ณผ |
29
+ | ๐Ÿ—๏ธ [**์•„ํ‚คํ…์ฒ˜**](architecture.md) | ์‹œ์Šคํ…œ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ |
30
+
31
+ ---
32
+
33
+ ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘
34
+
35
+ ### ์„ค์น˜
36
+
37
+ ```bash
38
+ git clone https://github.com/kimjindol2025/freelang-langv4.git
39
+ cd freelang-langv4
40
+ npm install && npm run build
41
+ ```
42
+
43
+ ### ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ๊ทธ๋žจ
44
+
45
+ ```freelang
46
+ let message = "Hello, FreeLang!"
47
+ println(message)
48
+
49
+ let numbers = [1, 2, 3, 4, 5]
50
+ for x in numbers {
51
+ println(str(x * x))
52
+ }
53
+ ```
54
+
55
+ ### ์‹คํ–‰
56
+
57
+ ```bash
58
+ node dist/vm.js hello.fl
59
+ ```
60
+
61
+ ---
62
+
63
+ ## ๐Ÿ’ก ์ฃผ์š” ํŠน์ง•
64
+
65
+ ### 1. ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ
66
+ ```freelang
67
+ let name: str = "Alice"
68
+ let age: i32 = 30
69
+ let scores: [i32] = [85, 90, 95]
70
+ ```
71
+
72
+ ### 2. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
73
+ ```freelang
74
+ let doubled = numbers.fold([], fn(acc, x) -> {
75
+ acc.push(x * 2)
76
+ acc
77
+ })
78
+ ```
79
+
80
+ ### 3. ์—๋Ÿฌ ์ฒ˜๋ฆฌ
81
+ ```freelang
82
+ match parse_int("42") {
83
+ case Ok(num) -> println(str(num)),
84
+ case Err(e) -> println(e)
85
+ }
86
+ ```
87
+
88
+ ### 4. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ & ๋ถ„์‚ฐ ์‹œ์Šคํ…œ
89
+ ```freelang
90
+ let pool = worker_pool_new(4)
91
+ worker_pool_process(pool, task)
92
+ ```
93
+
94
+ ---
95
+
96
+ ## ๐Ÿ“Š ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ
97
+
98
+ ```
99
+ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ: 2,200 ops โšก
100
+ ์ปฌ๋ ‰์…˜: 700 ops โšก
101
+ ์ˆ˜ํ•™ ์—ฐ์‚ฐ: 300 ops โšกโšกโšก
102
+ ํ•จ์ˆ˜ ํ˜ธ์ถœ: 20 ops โœ…
103
+ ์—๋Ÿฌ ์ฒ˜๋ฆฌ: 300 ops โœ…
104
+ ๊ตฌ์กฐ์ฒด: 300 ops โœ…
105
+ ์บ์‹œ ์—ฐ์‚ฐ: 300 ops โœจ (์‹ ๊ทœ)
106
+ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: 300 ops โœจ (์‹ ๊ทœ)
107
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
108
+ ํ•ฉ๊ณ„: 4,420 ops (15.7% ๊ฐœ์„ )
109
+ ```
110
+
111
+ ---
112
+
113
+ ## ๐ŸŽ“ ํ•™์Šต ๊ฒฝ๋กœ
114
+
115
+ | ๋‹จ๊ณ„ | ์ฃผ์ œ | ์‹œ๊ฐ„ |
116
+ |------|------|------|
117
+ | 1-4 | **์ดˆ๊ธ‰** (๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๋ฐฐ์—ด, ์—๋Ÿฌ) | 8h |
118
+ | 5-7 | **์ค‘๊ธ‰** (ํ•จ์ˆ˜ํ˜•, ๋ชจ๋“ˆ, ๋ฉ”๋ชจ๋ฆฌ) | 6h |
119
+ | 8-10 | **๊ณ ๊ธ‰** (๋ณ‘๋ ฌ, ๋ถ„์‚ฐ, ํ”„๋กœ์ ํŠธ) | 6h |
120
+
121
+ ๐Ÿ‘‰ [**10๋‹จ๊ณ„ ํ•™์Šต ๊ฐ€์ด๋“œ ์‹œ์ž‘ํ•˜๊ธฐ**](learning-guide.md)
122
+
123
+ ---
124
+
125
+ ## ๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ
126
+
127
+ - **์–ธ์–ด**: FreeLang v4
128
+ - **์ปดํŒŒ์ผ๋Ÿฌ**: TypeScript (src/)
129
+ - **๋Ÿฐํƒ€์ž„**: Node.js VM
130
+ - **ํ…Œ์ŠคํŠธ**: Jest (95.4% ํ†ต๊ณผ)
131
+ - **๋ฐฐํฌ**: GitHub Pages + Gogs
132
+
133
+ ---
134
+
135
+ ## ๐Ÿ“ˆ ํ”„๋กœ์ ํŠธ ์ƒํƒœ
136
+
137
+ ```
138
+ Phase 1-3: โœ… ์™„๋ฃŒ ๊ธฐ์ดˆ ๊ตฌํ˜„
139
+ Phase 4-6: โœ… ์™„๋ฃŒ ์„ฑ๋Šฅ & ๋ถ„์‚ฐ
140
+ Phase 7+: ๐Ÿ”„ ์ง„ํ–‰์ค‘ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ
141
+ ```
142
+
143
+ | ๋ฉ”ํŠธ๋ฆญ | ์ˆ˜์น˜ |
144
+ |--------|------|
145
+ | **์™„์„ฑ๋„** | 82.6% |
146
+ | **ํ…Œ์ŠคํŠธ** | 251/263 (95.4%) |
147
+ | **์ฝ”๋“œ ๋ผ์ธ** | 4,958์ค„ |
148
+ | **ํ‘œ์ค€ ํ•จ์ˆ˜** | 42๊ฐœ |
149
+
150
+ ---
151
+
152
+ ## ๐Ÿ”— ๋งํฌ
153
+
154
+ - ๐Ÿ™ **GitHub**: https://github.com/kimjindol2025/freelang-langv4
155
+ - ๐Ÿ“ฆ **Gogs**: https://gogs.dclub.kr/kim/freelang-v4
156
+ - ๐Ÿ“– **๋ฌธ์„œ**: ์ด ํŽ˜์ด์ง€์˜ ๋ฌธ์„œ ์„น์…˜ ์ฐธ๊ณ 
157
+
158
+ ---
159
+
160
+ ## ๐Ÿ’ฌ ํ”ผ๋“œ๋ฐฑ & ๊ธฐ์—ฌ
161
+
162
+ - ๐Ÿ› [๋ฒ„๊ทธ ๋ฆฌํฌํŠธ](https://github.com/kimjindol2025/freelang-langv4/issues)
163
+ - ๐Ÿ’ก [๊ธฐ๋Šฅ ์ œ์•ˆ](https://github.com/kimjindol2025/freelang-langv4/discussions)
164
+
165
+ ---
166
+
167
+ ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค
168
+
169
+ MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜์„ธ์š”!
170
+
171
+ ---
172
+
173
+ **Happy Coding! ๐Ÿš€**
174
+
175
+ Last Updated: 2026-04-05
@@ -0,0 +1,107 @@
1
+ # FreeLang v1/v2/v3 ์‹คํŒจ ๋ถ„์„ โ†’ v4 ๊ตํ›ˆ
2
+
3
+ ## ์ˆ˜์น˜ ๋น„๊ต
4
+
5
+ | ํ•ญ๋ชฉ | v1 | v2 | v3 | v4 |
6
+ |------|-----|-----|-----|-----|
7
+ | ์†Œ์Šค ํŒŒ์ผ | 304 | 344 | 94 | 11 |
8
+ | ์†Œ์Šค LOC | 109,515 | 115,628 | 34,905 | 5,764 |
9
+ | ์ปค๋ฐ‹ | 406 | 402 | 73 | 21 |
10
+ | Phase | 25 | 24 | 9 | 6 |
11
+ | ํด๋” (src/) | 32 | 55 | 1 (flat) | 1 |
12
+ | ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ | 140 ์‹คํŒจ | OOM Killed | 9 ํ†ต๊ณผ | **0 ์‹คํŒจ (334)** |
13
+ | ํŒŒ์„œ ๊ฐœ์ˆ˜ | 1 (split) | 6 | 1 | 1 (699์ค„) |
14
+ | ๋””์Šคํฌ | 317 MB | ~300 MB | ~5 MB | ~1 MB |
15
+
16
+ ## v1 ์‹คํŒจ ์›์ธ
17
+
18
+ ### 1. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ 5๊ฐœ (์–ด๋А ๊ฒƒ๋„ ๋ฏธ์™„์„ฑ)
19
+ - `src/compiler/` โ€” SimpleParser + CGenerator (ํ† ์ด ์ˆ˜์ค€)
20
+ - `src/parser/` โ€” 2,132์ค„ (๋ณ„๋„)
21
+ - `src/vm/` โ€” compiler.ts + vm.ts (๋ณ„๋„)
22
+ - `src/interpreter/` โ€” 2,887์ค„ (๋ณ„๋„)
23
+ - `src/codegen/` โ€” LLVM, C, multi-backend (๋ณ„๋„)
24
+
25
+ ํŒŒ์ดํ”„๋ผ์ธ์ด ์—ฐ๊ฒฐ ์•ˆ ๋จ. ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ.
26
+
27
+ ### 2. ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์ •๊ทœ์‹ split
28
+ ```typescript
29
+ // v1: ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ๊นจ์ง, 2๊ธ€์ž ์—ฐ์‚ฐ์ž ๋ฏธ์ฒ˜๋ฆฌ
30
+ const parts = trimmed.replace(/([(){}\[\];:,])/g, ' $1 ').split(/\s+/);
31
+ ```
32
+
33
+ ### 3. stdlib 159๊ฐœ ํŒŒ์ผ์ด ์ „๋ถ€ TypeScript ๋ž˜ํผ
34
+ ```typescript
35
+ // FreeLang ์ฝ”๋“œ์—์„œ ํ˜ธ์ถœ ๊ฒฝ๋กœ ์—†์Œ
36
+ static abs(x: number): number { return globalThis.Math.abs(x); }
37
+ ```
38
+
39
+ ### 4. Phase 10์—์„œ v1.0.0 ์„ ์–ธ ํ›„ Phase 25๊นŒ์ง€ ๋ฌดํ•œ ํ™•์žฅ
40
+ Swagger, ORM, MongoDB, gRPC, WebSocket, CI/CD... ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์ด Phase 25 Revert.
41
+
42
+ ### 5. ํ…Œ์ŠคํŠธ 10.5% ์‹คํŒจ (140/1,338), 6๋ถ„ 40์ดˆ ์†Œ์š”
43
+
44
+ ## v2 ์‹คํŒจ ์›์ธ
45
+
46
+ ### 1. v1๋ณด๋‹ค ํด๋” ๋” ๋Š˜์–ด๋‚จ (32 โ†’ 55)
47
+ `type-checker/`, `type-system/`, `types/` 3๊ฐœ ๊ณต์กด. `analyzer/`์— 38๊ฐœ ํŒŒ์ผ.
48
+
49
+ ### 2. ํŒŒ์„œ 6๊ฐœ (์•ˆ ๋˜๋ฉด ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ ๋ฐ˜๋ณต)
50
+ ```
51
+ parser.ts 1,397์ค„
52
+ one-pass-parser.ts 819์ค„
53
+ partial-parser.ts 675์ค„
54
+ block-parser.ts 459์ค„
55
+ async-parser.ts 359์ค„
56
+ expression-completer 613์ค„
57
+ ํ•ฉ๊ณ„: 5,279์ค„
58
+ ```
59
+
60
+ ### 3. Phase ํด๋”๊ฐ€ src/ ์•ˆ์— 16๊ฐœ ํ˜ผ์žฌ
61
+ ```
62
+ src/phase-6/ src/phase-8/ src/phase-9/ src/phase-10/ (2.5MB!)
63
+ src/phase-11/ ~ src/phase-24/
64
+ ```
65
+ ์ž‘์—… ๋‹จ์œ„์™€ ์ฝ”๋“œ ๊ตฌ์กฐ ๊ตฌ๋ถ„ ๋ถˆ๊ฐ€.
66
+
67
+ ### 4. ํ…Œ์ŠคํŠธ OOM Killed (82,386์ค„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๋กœ ๋๊นŒ์ง€ ๋ชป ๋Œ์•„๊ฐ)
68
+
69
+ ## v3 ์‹คํŒจ ์›์ธ
70
+
71
+ ### 1. ๊ทœ๋ชจ๋Š” ์ค„์—ˆ์ง€๋งŒ (34,905 LOC) 73์ปค๋ฐ‹์— Phase 9๊นŒ์ง€ ํ™•์žฅ
72
+ ### 2. CSI (Claude Self-Interrogation) ๋“ฑ ์–ธ์–ด ์™ธ ๊ธฐ๋Šฅ์— ์ง‘์ค‘
73
+ ### 3. "v3.0.0 Release Ready" ์„ ์–ธ ํ›„์—๋„ ๊ณ„์† ๊ธฐ๋Šฅ ์ถ”๊ฐ€
74
+ ### 4. ํ…Œ์ŠคํŠธ 9๊ฐœ๋ฟ (์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ€์กฑ)
75
+
76
+ ## v4๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ํ•œ ๊ฒƒ
77
+
78
+ | ๋ฌธ์ œ | v1/v2/v3 | v4 |
79
+ |------|---------|-----|
80
+ | ์„ค๊ณ„ | ์ฝ”๋“œ๋ถ€ํ„ฐ ์นจ | **์„ค๊ณ„ 10 Step ๋จผ์ €** |
81
+ | ํŒŒ์ดํ”„๋ผ์ธ | ๋ถ„๋ฆฌ/์ค‘๋ณต | **1๊ฐœ ์—ฐ๊ฒฐ (Lexerโ†’Parserโ†’Checkerโ†’Compilerโ†’VM)** |
82
+ | ๋ฒ”์œ„ | Phase ๋ฌดํ•œ ํ™•์žฅ | **6 Phase๋กœ ๋** |
83
+ | ํŒŒ์„œ | ์—ฌ๋Ÿฌ ๊ฐœ (์•ˆ ๋˜๋ฉด ์ƒˆ๋กœ) | **1๊ฐœ (RD+Pratt, 699์ค„)** |
84
+ | ํด๋” | 32~55๊ฐœ | **src/ 1๊ฐœ (11ํŒŒ์ผ)** |
85
+ | ํ…Œ์ŠคํŠธ | ์‹คํŒจ/OOM/๋ถ€์กฑ | **334๊ฐœ 0 ์‹คํŒจ** |
86
+ | ์™„์„ฑ | ๋ฏธ์™„์„ฑ | **E2E ์‹คํ–‰ (factorial, fizzbuzz, fibonacci)** |
87
+
88
+ ## ํ•ต์‹ฌ ๊ตํ›ˆ
89
+
90
+ ```
91
+ v1: "๋งŒ๋“ค๋ฉด์„œ ์„ค๊ณ„ํ•˜์ž" โ†’ ํŒŒ์ดํ”„๋ผ์ธ ๋ฏธ์—ฐ๊ฒฐ
92
+ v2: "v1 ๊ตํ›ˆ์œผ๋กœ ๋” ์ž˜ ํ•˜์ž" โ†’ v1๋ณด๋‹ค ๋” ๋น„๋Œ€ํ•ด์ง
93
+ v3: "์ด๋ฒˆ์—” ์ž‘๊ฒŒ ํ•˜์ž" โ†’ ๊ทธ๋ž˜๋„ Phase 9๊นŒ์ง€ ํ™•์žฅ
94
+ v4: "์„ค๊ณ„ ๋จผ์ €. 6 Phase. ๋." โ†’ 5,764 LOC์— 334 tests 0 failures
95
+ ```
96
+
97
+ ## v5 ์ฐธ๊ณ  ์ž๋ฃŒ
98
+
99
+ - **AST Patterns**: https://gogs.dclub.kr/kim/ast-patterns.git
100
+ - 8๊ฐ€์ง€ AST ๊ตฌํ˜„ ํŒจํ„ด (Classic Tree, Tagged Union, Flat, Arena, Immutable, Green-Red Tree ๋“ฑ)
101
+ - v4๋Š” #2 Tagged Union ์‚ฌ์šฉ ์ค‘
102
+ - v5 ์„ฑ๋Šฅ ์ตœ์ ํ™” ์‹œ #4 Flat AST ๋˜๋Š” #5 Arena AST ๊ฒ€ํ† 
103
+ - **Observability Daemon**: https://gogs.dclub.kr/kim/Observability-Daemon.git
104
+ - ์ฝ”๋“œ ๋ถ„์„ ์–ด์‹œ์Šคํ„ดํŠธ (์—๋””ํ„ฐ ์—ฐ๋™ CLI)
105
+ - ์‹ค์‹œ๊ฐ„ ์œ„ํ—˜๋„ ๋ถ„์„ (๋ฉ”๋ชจ๋ฆฌ, ์„ฑ๋Šฅ, ์—๋Ÿฌ ํ•ธ๋“ค๋ง)
106
+ - Vim/Emacs/Sublime/VSCode ํ†ตํ•ฉ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ง€์›
107
+ - v5 FreeLang ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ(linter/advisor) ๊ตฌํ˜„ ์‹œ ์ฐธ๊ณ 
@@ -0,0 +1,36 @@
1
+ # GitHub Pages ์„ค์ •
2
+ title: FreeLang v4 - AI-First ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
3
+ description: ์™„์ „ํ•œ ๊ตฌํ˜„, ์„ฑ๋Šฅ ์ค‘์‹ฌ, ํ™•์žฅ์„ฑ ๋†’์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
4
+ author: Kim Jin Dol
5
+ email: contact@freelang.dev
6
+
7
+ # ํ…Œ๋งˆ ์„ค์ •
8
+ theme: jekyll-theme-minimal
9
+
10
+ # ๊ธฐ๋ณธ ์„ค์ •
11
+ markdown: kramdown
12
+ highlighter: rouge
13
+
14
+ # ํ”Œ๋Ÿฌ๊ทธ์ธ
15
+ plugins:
16
+ - jekyll-sitemap
17
+ - jekyll-seo-tag
18
+ - jekyll-feed
19
+
20
+ # SEO ์„ค์ •
21
+ lang: ko-KR
22
+ locale: ko_KR
23
+
24
+ # ๋นŒ๋“œ ์„ค์ •
25
+ exclude:
26
+ - .gitignore
27
+ - README.md
28
+ - LICENSE
29
+ - node_modules
30
+ - EXPERIENCE.md
31
+ - V1_V2_V3_ANALYSIS.md
32
+
33
+ # ์ถœ๋ ฅ ์„ค์ •
34
+ output: web
35
+ future: false
36
+ show_downloads: true