mt-lang 0.3.8 → 0.3.10

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/lib/milk_tea/base.rb +1 -2
  3. data/lib/milk_tea/bindings/bindgen/ast_parser.rb +0 -2
  4. data/lib/milk_tea/bindings/bindgen/declaration.rb +0 -2
  5. data/lib/milk_tea/bindings/bindgen/emitter.rb +0 -2
  6. data/lib/milk_tea/bindings/bindgen/overrides.rb +0 -2
  7. data/lib/milk_tea/bindings/bindgen/type_mapper.rb +51 -53
  8. data/lib/milk_tea/bindings/imported_bindings/generator.rb +7 -9
  9. data/lib/milk_tea/bindings/imported_bindings/method_source.rb +0 -2
  10. data/lib/milk_tea/bindings/imported_bindings/naming.rb +6 -8
  11. data/lib/milk_tea/bindings/imported_bindings.rb +0 -2
  12. data/lib/milk_tea/bindings/opengl_registry.rb +3 -7
  13. data/lib/milk_tea/bindings/steamworks.rb +12 -16
  14. data/lib/milk_tea/bindings/upstream_sources.rb +10 -14
  15. data/lib/milk_tea/bindings/vendored_box2d.rb +10 -12
  16. data/lib/milk_tea/bindings/vendored_cjson.rb +6 -8
  17. data/lib/milk_tea/bindings/vendored_flecs.rb +10 -12
  18. data/lib/milk_tea/bindings/vendored_glfw.rb +11 -13
  19. data/lib/milk_tea/bindings/vendored_libuv.rb +11 -13
  20. data/lib/milk_tea/bindings/vendored_pcre2.rb +11 -13
  21. data/lib/milk_tea/bindings/vendored_raylib.rb +6 -10
  22. data/lib/milk_tea/bindings/vendored_sdl3.rb +11 -13
  23. data/lib/milk_tea/bindings/vendored_steamworks.rb +1 -5
  24. data/lib/milk_tea/core/ast.rb +103 -45
  25. data/lib/milk_tea/core/async_runtime_installer.rb +0 -2
  26. data/lib/milk_tea/core/bindings/attribute_binding.rb +1 -3
  27. data/lib/milk_tea/core/c_backend/aggregate_utils.rb +147 -84
  28. data/lib/milk_tea/core/c_backend/control_flow_emission.rb +394 -396
  29. data/lib/milk_tea/core/c_backend/expressions.rb +489 -476
  30. data/lib/milk_tea/core/c_backend/feature_detection.rb +446 -437
  31. data/lib/milk_tea/core/c_backend/format_helpers.rb +0 -2
  32. data/lib/milk_tea/core/c_backend/reachability.rb +339 -341
  33. data/lib/milk_tea/core/c_backend/reinterpret.rb +231 -217
  34. data/lib/milk_tea/core/c_backend/runtime_helpers.rb +531 -526
  35. data/lib/milk_tea/core/c_backend/statements.rb +528 -530
  36. data/lib/milk_tea/core/c_backend/type_collectors.rb +1344 -1346
  37. data/lib/milk_tea/core/c_backend/type_declaration.rb +215 -213
  38. data/lib/milk_tea/core/c_backend/type_system.rb +347 -349
  39. data/lib/milk_tea/core/c_backend.rb +17 -9
  40. data/lib/milk_tea/core/compatibility_helpers.rb +0 -2
  41. data/lib/milk_tea/core/compile_time/const_eval.rb +7 -12
  42. data/lib/milk_tea/core/compile_time.rb +32 -38
  43. data/lib/milk_tea/core/control_flow/builder.rb +3 -5
  44. data/lib/milk_tea/core/control_flow/constant_propagation.rb +14 -17
  45. data/lib/milk_tea/core/control_flow/definite_assignment.rb +0 -1
  46. data/lib/milk_tea/core/ir.rb +10 -10
  47. data/lib/milk_tea/core/lexer/character_classes.rb +5 -7
  48. data/lib/milk_tea/core/lexer/format_strings.rb +7 -9
  49. data/lib/milk_tea/core/lexer/heredocs.rb +22 -22
  50. data/lib/milk_tea/core/lexer/indentation.rb +0 -2
  51. data/lib/milk_tea/core/lexer/numbers.rb +0 -2
  52. data/lib/milk_tea/core/lexer/recovery.rb +0 -2
  53. data/lib/milk_tea/core/lexer/strings.rb +0 -2
  54. data/lib/milk_tea/core/lexer/symbols.rb +0 -2
  55. data/lib/milk_tea/core/lexer/trivia.rb +0 -2
  56. data/lib/milk_tea/core/lexer.rb +0 -2
  57. data/lib/milk_tea/core/lowering/async/analysis.rb +0 -2
  58. data/lib/milk_tea/core/lowering/async/lowering.rb +1264 -1265
  59. data/lib/milk_tea/core/lowering/async/normalization.rb +0 -2
  60. data/lib/milk_tea/core/lowering/async.rb +627 -630
  61. data/lib/milk_tea/core/lowering/block.rb +413 -416
  62. data/lib/milk_tea/core/lowering/calls.rb +1381 -1384
  63. data/lib/milk_tea/core/lowering/declarations.rb +180 -183
  64. data/lib/milk_tea/core/lowering/dyn.rb +48 -50
  65. data/lib/milk_tea/core/lowering/events.rb +983 -985
  66. data/lib/milk_tea/core/lowering/expressions.rb +1513 -1518
  67. data/lib/milk_tea/core/lowering/foreign_cstr.rb +181 -184
  68. data/lib/milk_tea/core/lowering/functions.rb +185 -188
  69. data/lib/milk_tea/core/lowering/loops.rb +1028 -1031
  70. data/lib/milk_tea/core/lowering/proc.rb +363 -366
  71. data/lib/milk_tea/core/lowering/resolve.rb +2133 -2135
  72. data/lib/milk_tea/core/lowering/scans.rb +179 -181
  73. data/lib/milk_tea/core/lowering/str_buffer.rb +102 -105
  74. data/lib/milk_tea/core/lowering/utils.rb +1040 -1044
  75. data/lib/milk_tea/core/lowering.rb +5 -7
  76. data/lib/milk_tea/core/module_binder.rb +0 -2
  77. data/lib/milk_tea/core/module_loader/errors.rb +4 -2
  78. data/lib/milk_tea/core/module_loader.rb +113 -20
  79. data/lib/milk_tea/core/module_path_resolver.rb +0 -2
  80. data/lib/milk_tea/core/module_roots.rb +6 -8
  81. data/lib/milk_tea/core/parser/attributes.rb +0 -2
  82. data/lib/milk_tea/core/parser/blocks.rb +0 -2
  83. data/lib/milk_tea/core/parser/declarations.rb +0 -2
  84. data/lib/milk_tea/core/parser/expressions.rb +31 -14
  85. data/lib/milk_tea/core/parser/recovery.rb +0 -2
  86. data/lib/milk_tea/core/parser/statements.rb +0 -2
  87. data/lib/milk_tea/core/parser/types.rb +8 -10
  88. data/lib/milk_tea/core/parser.rb +1 -3
  89. data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +31 -33
  90. data/lib/milk_tea/core/pretty_printer/base_formatter.rb +0 -2
  91. data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +0 -2
  92. data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +0 -2
  93. data/lib/milk_tea/core/semantic_analyzer/attributes.rb +14 -16
  94. data/lib/milk_tea/core/semantic_analyzer/calls.rb +0 -2
  95. data/lib/milk_tea/core/semantic_analyzer/expressions.rb +1 -14
  96. data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +18 -21
  97. data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +0 -3
  98. data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +12 -15
  99. data/lib/milk_tea/core/semantic_analyzer/generics.rb +57 -59
  100. data/lib/milk_tea/core/semantic_analyzer/interface_conformance.rb +0 -2
  101. data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +5 -9
  102. data/lib/milk_tea/core/semantic_analyzer/nullability.rb +0 -3
  103. data/lib/milk_tea/core/semantic_analyzer/statements.rb +35 -40
  104. data/lib/milk_tea/core/semantic_analyzer/top_level.rb +10 -12
  105. data/lib/milk_tea/core/semantic_analyzer/type_compatibility.rb +0 -6
  106. data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +102 -105
  107. data/lib/milk_tea/core/semantic_analyzer.rb +17 -8
  108. data/lib/milk_tea/core/types/layout.rb +21 -22
  109. data/lib/milk_tea/core/types/predicates.rb +0 -2
  110. data/lib/milk_tea/core/types/registry.rb +16 -18
  111. data/lib/milk_tea/core/types/visitor.rb +0 -4
  112. data/lib/milk_tea/dap/backends/lldb_dap.rb +0 -2
  113. data/lib/milk_tea/dap/protocol.rb +1 -1
  114. data/lib/milk_tea/dap/server/breakpoints.rb +0 -2
  115. data/lib/milk_tea/dap/server/debug_map.rb +0 -2
  116. data/lib/milk_tea/dap/server/handlers.rb +0 -2
  117. data/lib/milk_tea/dap/server/launch.rb +0 -2
  118. data/lib/milk_tea/dap/server/lldb_backend.rb +8 -10
  119. data/lib/milk_tea/dap/server/pause_diagnostics.rb +14 -16
  120. data/lib/milk_tea/dap/server/utilities.rb +0 -2
  121. data/lib/milk_tea/dap/server/wire.rb +0 -2
  122. data/lib/milk_tea/dap/server.rb +0 -2
  123. data/lib/milk_tea/lsp/diagnostics.rb +16 -16
  124. data/lib/milk_tea/lsp/server/call_hierarchy.rb +11 -12
  125. data/lib/milk_tea/lsp/server/code_actions.rb +355 -357
  126. data/lib/milk_tea/lsp/server/code_lens.rb +23 -25
  127. data/lib/milk_tea/lsp/server/completion.rb +873 -875
  128. data/lib/milk_tea/lsp/server/configuration.rb +129 -131
  129. data/lib/milk_tea/lsp/server/debug_info.rb +0 -2
  130. data/lib/milk_tea/lsp/server/definition.rb +564 -565
  131. data/lib/milk_tea/lsp/server/diagnostics_scheduling.rb +191 -193
  132. data/lib/milk_tea/lsp/server/execute_command.rb +0 -2
  133. data/lib/milk_tea/lsp/server/folding_range.rb +0 -4
  134. data/lib/milk_tea/lsp/server/formatting.rb +478 -480
  135. data/lib/milk_tea/lsp/server/hover.rb +1282 -1284
  136. data/lib/milk_tea/lsp/server/inlay_hints.rb +179 -181
  137. data/lib/milk_tea/lsp/server/lifecycle.rb +192 -194
  138. data/lib/milk_tea/lsp/server/linked_editing_range.rb +0 -2
  139. data/lib/milk_tea/lsp/server/on_type_formatting.rb +0 -2
  140. data/lib/milk_tea/lsp/server/progress.rb +0 -2
  141. data/lib/milk_tea/lsp/server/references.rb +316 -318
  142. data/lib/milk_tea/lsp/server/rename.rb +445 -447
  143. data/lib/milk_tea/lsp/server/selection_range.rb +0 -4
  144. data/lib/milk_tea/lsp/server/semantic_tokens.rb +1318 -1320
  145. data/lib/milk_tea/lsp/server/signature_help.rb +146 -148
  146. data/lib/milk_tea/lsp/server/text_documents.rb +99 -101
  147. data/lib/milk_tea/lsp/server/type_hierarchy.rb +2 -4
  148. data/lib/milk_tea/lsp/server/utilities.rb +397 -399
  149. data/lib/milk_tea/lsp/server.rb +0 -3
  150. data/lib/milk_tea/lsp/workspace/analysis.rb +40 -42
  151. data/lib/milk_tea/lsp/workspace/dependency_graph.rb +4 -10
  152. data/lib/milk_tea/lsp/workspace/utilities.rb +19 -19
  153. data/lib/milk_tea/packages/atomic_write.rb +4 -5
  154. data/lib/milk_tea/packages/dependency_solver.rb +15 -15
  155. data/lib/milk_tea/packages/lock.rb +4 -4
  156. data/lib/milk_tea/packages/manager_cli.rb +1 -1
  157. data/lib/milk_tea/packages/manifest.rb +3 -3
  158. data/lib/milk_tea/packages/registry_store.rb +4 -6
  159. data/lib/milk_tea/packages/services.rb +16 -16
  160. data/lib/milk_tea/packages/source_cache.rb +4 -6
  161. data/lib/milk_tea/packages/source_resolver.rb +44 -44
  162. data/lib/milk_tea/packages/version.rb +8 -8
  163. data/lib/milk_tea/tooling/build.rb +3 -7
  164. data/lib/milk_tea/tooling/build_cache.rb +0 -2
  165. data/lib/milk_tea/tooling/debug_info_formatter.rb +31 -33
  166. data/lib/milk_tea/tooling/debug_map.rb +8 -10
  167. data/lib/milk_tea/tooling/docs_app.rb +0 -2
  168. data/lib/milk_tea/tooling/linter/doc_tags.rb +25 -27
  169. data/lib/milk_tea/tooling/linter/fix_engine.rb +87 -24
  170. data/lib/milk_tea/tooling/linter/flow_rules.rb +44 -46
  171. data/lib/milk_tea/tooling/linter/imports_platform.rb +14 -16
  172. data/lib/milk_tea/tooling/linter/release_rules.rb +3 -5
  173. data/lib/milk_tea/tooling/linter/reserved_names.rb +23 -25
  174. data/lib/milk_tea/tooling/linter/rules.rb +87 -89
  175. data/lib/milk_tea/tooling/linter/source_helpers.rb +40 -42
  176. data/lib/milk_tea/tooling/linter/trailing_comma.rb +17 -19
  177. data/lib/milk_tea/tooling/linter/visitors.rb +162 -50
  178. data/lib/milk_tea/tooling/linter.rb +0 -2
  179. data/lib/milk_tea/tooling/project_scaffold.rb +0 -2
  180. data/lib/milk_tea/tooling/run.rb +0 -2
  181. data/lib/milk_tea/tooling/toolchain_cli.rb +0 -2
  182. data/std/cli.mt +13 -32
  183. data/std/color.mt +28 -28
  184. data/std/encoding.mt +4 -4
  185. data/std/graph.mt +1 -2
  186. data/std/hash.mt +14 -14
  187. data/std/http/server.mt +3 -3
  188. data/std/input.mt +1 -1
  189. data/std/json.mt +1 -1
  190. data/std/linear_algebra.mt +6 -6
  191. data/std/net/mux.mt +1 -1
  192. data/std/noise.mt +23 -23
  193. data/std/parse.mt +2 -2
  194. data/std/process.mt +3 -4
  195. data/std/sparse_set.mt +1 -1
  196. data/std/steering.mt +5 -5
  197. data/std/str.mt +1 -1
  198. data/std/tween.mt +4 -4
  199. data/std/utility.mt +3 -3
  200. metadata +2 -2
data/std/color.mt CHANGED
@@ -50,8 +50,8 @@ function fabs(x: float) -> float:
50
50
  function fmod(x: float, m: float) -> float:
51
51
  # x - floor(x / m) * m
52
52
  let div = x / m
53
- let fl = float<-(int<-(div))
54
- if div < 0.0 and float<-(int<-(div)) != div:
53
+ let fl = float<-(int<-div)
54
+ if div < 0.0 and float<-(int<-div) != div:
55
55
  return x - (fl - 1.0) * m
56
56
  return x - fl * m
57
57
 
@@ -143,9 +143,9 @@ extending Color:
143
143
 
144
144
 
145
145
  public function to_hsl() -> (float, float, float):
146
- let rf = float<-(this.r) / 255.0
147
- let gf = float<-(this.g) / 255.0
148
- let bf = float<-(this.b) / 255.0
146
+ let rf = float<-this.r / 255.0
147
+ let gf = float<-this.g / 255.0
148
+ let bf = float<-this.b / 255.0
149
149
 
150
150
  let mx = fmax(fmax(rf, gf), bf)
151
151
  let mn = fmin(fmin(rf, gf), bf)
@@ -171,9 +171,9 @@ extending Color:
171
171
 
172
172
 
173
173
  public function to_hsv() -> (float, float, float):
174
- let rf = float<-(this.r) / 255.0
175
- let gf = float<-(this.g) / 255.0
176
- let bf = float<-(this.b) / 255.0
174
+ let rf = float<-this.r / 255.0
175
+ let gf = float<-this.g / 255.0
176
+ let bf = float<-this.b / 255.0
177
177
 
178
178
  let mx = fmax(fmax(rf, gf), bf)
179
179
  let mn = fmin(fmin(rf, gf), bf)
@@ -198,11 +198,11 @@ extending Color:
198
198
 
199
199
 
200
200
  public function lerp(target: Color, t: float) -> Color:
201
- let r = float<-(this.r) + (float<-(target.r) - float<-(this.r)) * t
202
- let g = float<-(this.g) + (float<-(target.g) - float<-(this.g)) * t
203
- let b = float<-(this.b) + (float<-(target.b) - float<-(this.b)) * t
204
- let a = float<-(this.a) + (float<-(target.a) - float<-(this.a)) * t
205
- return Color(r = ubyte<-(r), g = ubyte<-(g), b = ubyte<-(b), a = ubyte<-(a))
201
+ let r = float<-this.r + (float<-target.r - float<-this.r) * t
202
+ let g = float<-this.g + (float<-target.g - float<-this.g) * t
203
+ let b = float<-this.b + (float<-target.b - float<-this.b) * t
204
+ let a = float<-this.a + (float<-target.a - float<-this.a) * t
205
+ return Color(r = ubyte<-r, g = ubyte<-g, b = ubyte<-b, a = ubyte<-a)
206
206
 
207
207
 
208
208
  public function alpha_blend(background: Color) -> Color:
@@ -211,33 +211,33 @@ extending Color:
211
211
  if this.a == 255:
212
212
  return this
213
213
 
214
- let sa = float<-(this.a) / 255.0
215
- let da = float<-(background.a) / 255.0
214
+ let sa = float<-this.a / 255.0
215
+ let da = float<-background.a / 255.0
216
216
 
217
- let r_out = float<-(this.r) * sa + float<-(background.r) * da * (1.0 - sa)
218
- let g_out = float<-(this.g) * sa + float<-(background.g) * da * (1.0 - sa)
219
- let b_out = float<-(this.b) * sa + float<-(background.b) * da * (1.0 - sa)
217
+ let r_out = float<-this.r * sa + float<-background.r * da * (1.0 - sa)
218
+ let g_out = float<-this.g * sa + float<-background.g * da * (1.0 - sa)
219
+ let b_out = float<-this.b * sa + float<-background.b * da * (1.0 - sa)
220
220
  let a_out = sa + da * (1.0 - sa)
221
221
 
222
222
  return Color(
223
- r = ubyte<-(r_out),
224
- g = ubyte<-(g_out),
225
- b = ubyte<-(b_out),
223
+ r = ubyte<-r_out,
224
+ g = ubyte<-g_out,
225
+ b = ubyte<-b_out,
226
226
  a = ubyte<-(a_out * 255.0)
227
227
  )
228
228
 
229
229
 
230
230
  public function scale(factor: float) -> Color:
231
- let r = fmin(fmax(float<-(this.r) * factor, 0.0), 255.0)
232
- let g = fmin(fmax(float<-(this.g) * factor, 0.0), 255.0)
233
- let b = fmin(fmax(float<-(this.b) * factor, 0.0), 255.0)
234
- return Color(r = ubyte<-(r), g = ubyte<-(g), b = ubyte<-(b), a = this.a)
231
+ let r = fmin(fmax(float<-this.r * factor, 0.0), 255.0)
232
+ let g = fmin(fmax(float<-this.g * factor, 0.0), 255.0)
233
+ let b = fmin(fmax(float<-this.b * factor, 0.0), 255.0)
234
+ return Color(r = ubyte<-r, g = ubyte<-g, b = ubyte<-b, a = this.a)
235
235
 
236
236
 
237
237
  public function multiply(other: Color) -> Color:
238
- let r = ubyte<-(int<-((int<-(this.r) * int<-(other.r)) / 255))
239
- let g = ubyte<-(int<-((int<-(this.g) * int<-(other.g)) / 255))
240
- let b = ubyte<-(int<-((int<-(this.b) * int<-(other.b)) / 255))
238
+ let r = ubyte<-((int<-this.r * int<-other.r) / 255)
239
+ let g = ubyte<-((int<-this.g * int<-other.g) / 255)
240
+ let b = ubyte<-((int<-this.b * int<-other.b) / 255)
241
241
  return Color(r = r, g = g, b = b, a = this.a)
242
242
 
243
243
 
data/std/encoding.mt CHANGED
@@ -47,15 +47,15 @@ public function decode_utf8_codepoint(text: str, byte_offset: ptr_uint) -> Optio
47
47
  return Option[uint].none
48
48
 
49
49
  if len == 1:
50
- return Option[uint].some(value = uint<-(b0))
50
+ return Option[uint].some(value = uint<-b0)
51
51
 
52
52
  var codepoint: uint = (b0)
53
53
  if len == 2:
54
- codepoint = codepoint & uint<-(0x1F)
54
+ codepoint = codepoint & uint<-0x1F
55
55
  else if len == 3:
56
- codepoint = codepoint & uint<-(0x0F)
56
+ codepoint = codepoint & uint<-0x0F
57
57
  else if len == 4:
58
- codepoint = codepoint & uint<-(0x07)
58
+ codepoint = codepoint & uint<-0x07
59
59
  var i: ptr_uint = 1
60
60
  while i < len:
61
61
  codepoint = (codepoint << 6) | uint<-(text.byte_at(byte_offset + i) & 0x3F)
data/std/graph.mt CHANGED
@@ -36,8 +36,7 @@ extending HeapEntry:
36
36
  return 1
37
37
  else if da > db:
38
38
  return -1
39
- else:
40
- return 0
39
+ return 0
41
40
 
42
41
 
43
42
  public struct ShortestPaths:
data/std/hash.mt CHANGED
@@ -16,10 +16,10 @@ extending int:
16
16
  let fnv: uint = 0x811C9DC5
17
17
  let prime: uint = 0x01000193
18
18
  var h = fnv
19
- h = (h ^ (as_uint & uint<-(0xFF))) * prime
20
- h = (h ^ ((as_uint >> uint<-(8)) & uint<-(0xFF))) * prime
21
- h = (h ^ ((as_uint >> uint<-(16)) & uint<-(0xFF))) * prime
22
- h = (h ^ ((as_uint >> uint<-(24)) & uint<-(0xFF))) * prime
19
+ h = (h ^ (as_uint & uint<-0xFF)) * prime
20
+ h = (h ^ ((as_uint >> uint<-8) & uint<-0xFF)) * prime
21
+ h = (h ^ ((as_uint >> uint<-16) & uint<-0xFF)) * prime
22
+ h = (h ^ ((as_uint >> uint<-24) & uint<-0xFF)) * prime
23
23
  return h
24
24
 
25
25
 
@@ -49,10 +49,10 @@ extending uint:
49
49
  let fnv: uint = 0x811C9DC5
50
50
  let prime: uint = 0x01000193
51
51
  var h = fnv
52
- h = (h ^ (uint<-(ubyte<-(v & uint<-(0xFF))))) * prime
53
- h = (h ^ (uint<-(ubyte<-((v >> uint<-(8)) & uint<-(0xFF))))) * prime
54
- h = (h ^ (uint<-(ubyte<-((v >> uint<-(16)) & uint<-(0xFF))))) * prime
55
- h = (h ^ (uint<-(ubyte<-((v >> uint<-(24)) & uint<-(0xFF))))) * prime
52
+ h = (h ^ (uint<-(ubyte<-(v & uint<-0xFF)))) * prime
53
+ h = (h ^ (uint<-(ubyte<-((v >> uint<-8) & uint<-0xFF)))) * prime
54
+ h = (h ^ (uint<-(ubyte<-((v >> uint<-16) & uint<-0xFF)))) * prime
55
+ h = (h ^ (uint<-(ubyte<-((v >> uint<-24) & uint<-0xFF)))) * prime
56
56
  return h
57
57
 
58
58
 
@@ -141,7 +141,7 @@ extending double:
141
141
  if v == 0.0:
142
142
  return 0
143
143
  let bits: ulong = reinterpret[ulong](v)
144
- return uint<-((bits >> uint<-(32)) ^ bits)
144
+ return uint<-((bits >> uint<-32) ^ bits)
145
145
 
146
146
 
147
147
  public static function equal(a: const_ptr[double], b: const_ptr[double]) -> bool:
@@ -193,15 +193,15 @@ function hash_uint(value: uint) -> uint:
193
193
  let fnv: uint = 0x811C9DC5
194
194
  let prime: uint = 0x01000193
195
195
  var h = fnv
196
- h = (h ^ (value & uint<-(0xFF))) * prime
197
- h = (h ^ ((value >> uint<-(8)) & uint<-(0xFF))) * prime
198
- h = (h ^ ((value >> uint<-(16)) & uint<-(0xFF))) * prime
199
- h = (h ^ ((value >> uint<-(24)) & uint<-(0xFF))) * prime
196
+ h = (h ^ (value & uint<-0xFF)) * prime
197
+ h = (h ^ ((value >> uint<-8) & uint<-0xFF)) * prime
198
+ h = (h ^ ((value >> uint<-16) & uint<-0xFF)) * prime
199
+ h = (h ^ ((value >> uint<-24) & uint<-0xFF)) * prime
200
200
  return h
201
201
 
202
202
 
203
203
  function hash_ulong(value: ulong) -> uint:
204
- return hash_uint(uint<-((value >> uint<-(32)) ^ value))
204
+ return hash_uint(uint<-((value >> uint<-32) ^ value))
205
205
 
206
206
 
207
207
  extending byte:
data/std/http/server.mt CHANGED
@@ -407,7 +407,7 @@ const READ_BUFFER_SIZE: ptr_uint = 4096
407
407
 
408
408
 
409
409
  function parse_port(args: span[str]) -> int:
410
- var index: ptr_uint = 0
410
+ var index: ptr_uint = 1
411
411
  while index < args.len:
412
412
  let arg = unsafe: read(args.data + index)
413
413
  if arg.equal("--port") or arg.equal("-p"):
@@ -419,7 +419,7 @@ function parse_port(args: span[str]) -> int:
419
419
  var port: int = 0
420
420
  var digit_index: ptr_uint = 0
421
421
  while digit_index < port_arg.len:
422
- let digit = int<-(port_arg.byte_at(digit_index)) - 48
422
+ let digit = int<-port_arg.byte_at(digit_index) - 48
423
423
  if digit < 0 or digit > 9:
424
424
  return 0
425
425
  port = port * 10 + digit
@@ -436,7 +436,7 @@ function parse_port(args: span[str]) -> int:
436
436
 
437
437
 
438
438
  function parse_serve_dir(args: span[str]) -> str:
439
- var index: ptr_uint = 0
439
+ var index: ptr_uint = 1
440
440
  while index < args.len:
441
441
  let arg = unsafe: read(args.data + index)
442
442
  if arg.equal("--root") or arg.equal("-r"):
data/std/input.mt CHANGED
@@ -45,7 +45,7 @@ extending InputMap:
45
45
 
46
46
  public editable function add_action(name: str) -> ptr_uint:
47
47
  let id = this.actions.len()
48
- var action = InputAction(name = name, bindings = vec.Vec[InputBinding].create())
48
+ let action = InputAction(name = name, bindings = vec.Vec[InputBinding].create())
49
49
  this.actions.push(action)
50
50
  return id
51
51
 
data/std/json.mt CHANGED
@@ -401,7 +401,7 @@ public function parse(text_value: str) -> Result[Value, Error]:
401
401
  let error_ptr = raw.cJSON_GetErrorPtr()
402
402
  if error_ptr == null:
403
403
  return Result[Value, Error].failure(error = error_message("json parse failed"))
404
- let error_text = text.cstr_as_str(unsafe: cstr<-error_ptr)
404
+ let error_text = text.cstr_as_str(error_ptr)
405
405
  if error_text.len == 0:
406
406
  return Result[Value, Error].failure(error = error_message("json parse failed"))
407
407
  return Result[Value, Error].failure(error = Error(message = string.String.from_str(error_text)))
@@ -22,7 +22,7 @@ extending vec2:
22
22
 
23
23
 
24
24
  public function length() -> float:
25
- return float<-math.sqrt(double<-(this.length_squared()))
25
+ return float<-math.sqrt(double<-this.length_squared())
26
26
 
27
27
 
28
28
  public function normalized() -> vec2:
@@ -37,7 +37,7 @@ extending vec2:
37
37
 
38
38
 
39
39
  public function distance_to(v: vec2) -> float:
40
- return float<-math.sqrt(double<-(this.distance_squared_to(v)))
40
+ return float<-math.sqrt(double<-this.distance_squared_to(v))
41
41
 
42
42
 
43
43
  public function lerp(target: vec2, t: float) -> vec2:
@@ -65,7 +65,7 @@ extending vec3:
65
65
 
66
66
 
67
67
  public function length() -> float:
68
- return float<-math.sqrt(double<-(this.length_squared()))
68
+ return float<-math.sqrt(double<-this.length_squared())
69
69
 
70
70
 
71
71
  public function normalized() -> vec3:
@@ -81,7 +81,7 @@ extending vec3:
81
81
 
82
82
 
83
83
  public function distance_to(v: vec3) -> float:
84
- return float<-math.sqrt(double<-(this.distance_squared_to(v)))
84
+ return float<-math.sqrt(double<-this.distance_squared_to(v))
85
85
 
86
86
 
87
87
  public function cross(v: vec3) -> vec3:
@@ -117,7 +117,7 @@ extending vec4:
117
117
 
118
118
 
119
119
  public function length() -> float:
120
- return float<-math.sqrt(double<-(this.length_squared()))
120
+ return float<-math.sqrt(double<-this.length_squared())
121
121
 
122
122
 
123
123
  public function normalized() -> vec4:
@@ -134,7 +134,7 @@ extending vec4:
134
134
 
135
135
 
136
136
  public function distance_to(v: vec4) -> float:
137
- return float<-math.sqrt(double<-(this.distance_squared_to(v)))
137
+ return float<-math.sqrt(double<-this.distance_squared_to(v))
138
138
 
139
139
 
140
140
  public function lerp(target: vec4, t: float) -> vec4:
data/std/net/mux.mt CHANGED
@@ -807,7 +807,7 @@ function find_frag_buffer(buffers: ref[vec.Vec[FragBuffer]], peer_id: uint, grou
807
807
 
808
808
 
809
809
  function prune_frag_buffers(buffers: ref[vec.Vec[FragBuffer]], frame: uint, timeout_frames: uint) -> void:
810
- var index: int = int<-(buffers.len())
810
+ var index: int = int<-buffers.len()
811
811
  index -= 1
812
812
  while index >= 0:
813
813
  let buf_ptr = buffers.get(ptr_uint<-index) else:
data/std/noise.mt CHANGED
@@ -47,8 +47,8 @@ function grad3d(hash: int, x: float, y: float, z: float) -> float:
47
47
  # ── internal noise functions ──
48
48
 
49
49
  function perlin2d_impl(perm: array[ubyte, 512], x: float, y: float) -> float:
50
- let ix = int<-(x)
51
- let iy = int<-(y)
50
+ let ix = int<-x
51
+ let iy = int<-y
52
52
  let X = ix & 255
53
53
  let Y = iy & 255
54
54
  let xf = x - float<-(ix - (ix & ~255))
@@ -57,12 +57,12 @@ function perlin2d_impl(perm: array[ubyte, 512], x: float, y: float) -> float:
57
57
  let u = fade(if xf < 0.0: xf + 1.0 else: xf)
58
58
  let v = fade(if yf < 0.0: yf + 1.0 else: yf)
59
59
 
60
- let A = int<-(perm[X]) + Y
61
- let B = int<-(perm[X + 1]) + Y
62
- let aa = int<-(perm[A])
63
- let ab = int<-(perm[A + 1])
64
- let ba = int<-(perm[B])
65
- let bb = int<-(perm[B + 1])
60
+ let A = int<-perm[X] + Y
61
+ let B = int<-perm[X + 1] + Y
62
+ let aa = int<-perm[A]
63
+ let ab = int<-perm[A + 1]
64
+ let ba = int<-perm[B]
65
+ let bb = int<-perm[B + 1]
66
66
 
67
67
  let x1 = lerp(grad2d(aa, xf, yf), grad2d(ba, xf - 1.0, yf), u)
68
68
  let x2 = lerp(grad2d(ab, xf, yf - 1.0), grad2d(bb, xf - 1.0, yf - 1.0), u)
@@ -71,9 +71,9 @@ function perlin2d_impl(perm: array[ubyte, 512], x: float, y: float) -> float:
71
71
 
72
72
 
73
73
  function perlin3d_impl(perm: array[ubyte, 512], x: float, y: float, z: float) -> float:
74
- let ix = int<-(x)
75
- let iy = int<-(y)
76
- let iz = int<-(z)
74
+ let ix = int<-x
75
+ let iy = int<-y
76
+ let iz = int<-z
77
77
  let X = ix & 255
78
78
  let Y = iy & 255
79
79
  let Z = iz & 255
@@ -85,19 +85,19 @@ function perlin3d_impl(perm: array[ubyte, 512], x: float, y: float, z: float) ->
85
85
  let v = fade(if yf < 0.0: yf + 1.0 else: yf)
86
86
  let w = fade(if zf < 0.0: zf + 1.0 else: zf)
87
87
 
88
- let A = int<-(perm[X]) + Y
89
- let AA = int<-(perm[A]) + Z
90
- let AB = int<-(perm[A + 1]) + Z
91
- let B = int<-(perm[X + 1]) + Y
92
- let BA = int<-(perm[B]) + Z
93
- let BB = int<-(perm[B + 1]) + Z
88
+ let A = int<-perm[X] + Y
89
+ let AA = int<-perm[A] + Z
90
+ let AB = int<-perm[A + 1] + Z
91
+ let B = int<-perm[X + 1] + Y
92
+ let BA = int<-perm[B] + Z
93
+ let BB = int<-perm[B + 1] + Z
94
94
 
95
- let x1 = lerp(grad3d(int<-(perm[AA]), xf, yf, zf), grad3d(int<-(perm[BA]), xf - 1.0, yf, zf), u)
96
- let x2 = lerp(grad3d(int<-(perm[AB]), xf, yf - 1.0, zf), grad3d(int<-(perm[BB]), xf - 1.0, yf - 1.0, zf), u)
95
+ let x1 = lerp(grad3d(int<-perm[AA], xf, yf, zf), grad3d(int<-perm[BA], xf - 1.0, yf, zf), u)
96
+ let x2 = lerp(grad3d(int<-perm[AB], xf, yf - 1.0, zf), grad3d(int<-perm[BB], xf - 1.0, yf - 1.0, zf), u)
97
97
  let y1 = lerp(x1, x2, v)
98
98
 
99
- let x3 = lerp(grad3d(int<-(perm[AA + 1]), xf, yf, zf - 1.0), grad3d(int<-(perm[BA + 1]), xf - 1.0, yf, zf - 1.0), u)
100
- let x4 = lerp(grad3d(int<-(perm[AB + 1]), xf, yf - 1.0, zf - 1.0), grad3d(int<-(perm[BB + 1]), xf - 1.0, yf - 1.0, zf - 1.0), u)
99
+ let x3 = lerp(grad3d(int<-perm[AA + 1], xf, yf, zf - 1.0), grad3d(int<-perm[BA + 1], xf - 1.0, yf, zf - 1.0), u)
100
+ let x4 = lerp(grad3d(int<-perm[AB + 1], xf, yf - 1.0, zf - 1.0), grad3d(int<-perm[BB + 1], xf - 1.0, yf - 1.0, zf - 1.0), u)
101
101
  let y2 = lerp(x3, x4, v)
102
102
 
103
103
  return lerp(y1, y2, w)
@@ -106,8 +106,8 @@ function perlin3d_impl(perm: array[ubyte, 512], x: float, y: float, z: float) ->
106
106
  # ── float floor for negative numbers ──
107
107
 
108
108
  function floor_f(x: float) -> int:
109
- let i = int<-(x)
110
- if x < 0.0 and float<-(i) != x:
109
+ let i = int<-x
110
+ if x < 0.0 and float<-i != x:
111
111
  return i - 1
112
112
  return i
113
113
 
data/std/parse.mt CHANGED
@@ -6,8 +6,8 @@ import std.libc as c
6
6
 
7
7
 
8
8
  public function parse_int(text: str, base: int) -> int:
9
- return int<-(c.parse_long_to_end(text, null, base))
9
+ return int<-c.parse_long_to_end(text, null, base)
10
10
 
11
11
 
12
12
  public function parse_float(text: str) -> float:
13
- return float<-(c.parse_double(text))
13
+ return float<-c.parse_double(text)
data/std/process.mt CHANGED
@@ -73,8 +73,7 @@ public function parent_environment() -> vec.Vec[EnvironmentEntry]:
73
73
  return result
74
74
  result.reserve(count)
75
75
  unsafe:
76
- let raw_ptr_opt = c.mt_process_environ_accessor()
77
- if raw_ptr_opt == null:
76
+ let raw_ptr_opt = c.mt_process_environ_accessor() else:
78
77
  return result
79
78
  let env_array = read(raw_ptr_opt)
80
79
  var i: ptr_uint = 0
@@ -94,7 +93,7 @@ public function parent_environment() -> vec.Vec[EnvironmentEntry]:
94
93
  nname.reserve(eq_pos)
95
94
  var ni: ptr_uint = 0
96
95
  while ni < eq_pos:
97
- nname.push_byte(ubyte<-(read(entry_cstr + ni)))
96
+ nname.push_byte(ubyte<-read(entry_cstr + ni))
98
97
  ni += 1
99
98
  var nvalue = string.String.create()
100
99
  let vlen = len - eq_pos - 1
@@ -102,7 +101,7 @@ public function parent_environment() -> vec.Vec[EnvironmentEntry]:
102
101
  nvalue.reserve(vlen)
103
102
  var vi: ptr_uint = 0
104
103
  while vi < vlen:
105
- nvalue.push_byte(ubyte<-(read(entry_cstr + eq_pos + 1 + vi)))
104
+ nvalue.push_byte(ubyte<-read(entry_cstr + eq_pos + 1 + vi))
106
105
  vi += 1
107
106
  result.push(EnvironmentEntry(
108
107
  name = nname.as_str(),
data/std/sparse_set.mt CHANGED
@@ -18,7 +18,7 @@ extending SparseSet[T]:
18
18
  return SparseSet[T](
19
19
  sparse = vec.Vec[ptr_uint].create(),
20
20
  dense = vec.Vec[T].create(),
21
- keys = vec.Vec[ptr_uint].create(),
21
+ keys = vec.Vec[ptr_uint].create()
22
22
  )
23
23
 
24
24
 
data/std/steering.mt CHANGED
@@ -81,8 +81,8 @@ extending vec2:
81
81
  return zero[vec2]
82
82
  let forward = set_magnitude(velocity, 1.0)
83
83
  let circle_center = forward * wander_distance
84
- let wx = circle_center.x + wander_radius * float<-(math.cos(double<-(wander_angle)))
85
- let wy = circle_center.y + wander_radius * float<-(math.sin(double<-(wander_angle)))
84
+ let wx = circle_center.x + wander_radius * float<-math.cos(double<-wander_angle)
85
+ let wy = circle_center.y + wander_radius * float<-math.sin(double<-wander_angle)
86
86
  let displacement = vec2(x = wx, y = wy)
87
87
  return displacement
88
88
 
@@ -98,7 +98,7 @@ extending vec2:
98
98
  steer = steer + repulsion
99
99
  count += 1
100
100
  if count > 0:
101
- steer = steer / float<-(count)
101
+ steer = steer / float<-count
102
102
  return steer
103
103
 
104
104
 
@@ -109,7 +109,7 @@ extending vec2:
109
109
  sum = sum + nv
110
110
  count += 1
111
111
  if count > 0:
112
- let avg = sum / float<-(count)
112
+ let avg = sum / float<-count
113
113
  return avg - velocity
114
114
  return zero[vec2]
115
115
 
@@ -123,7 +123,7 @@ extending vec2:
123
123
  sum = sum + np
124
124
  count += 1
125
125
  if count > 0:
126
- let center = sum / float<-(count)
126
+ let center = sum / float<-count
127
127
  return center - position
128
128
  return zero[vec2]
129
129
 
data/std/str.mt CHANGED
@@ -208,7 +208,7 @@ extending str:
208
208
 
209
209
  if not utf8_boundary(this, start):
210
210
  fatal(c"str slice start must be a UTF-8 boundary")
211
- var actual_stop = start + len
211
+ let actual_stop = start + len
212
212
  if not utf8_boundary(this, actual_stop):
213
213
  fatal(c"str slice end must be a UTF-8 boundary")
214
214
 
data/std/tween.mt CHANGED
@@ -61,19 +61,19 @@ public struct Tween:
61
61
  # ── math helpers ──
62
62
 
63
63
  function pow_f(base: float, exp: float) -> float:
64
- return float<-(math.pow(double<-(base), double<-(exp)))
64
+ return float<-math.pow(double<-base, double<-exp)
65
65
 
66
66
 
67
67
  function sin_f(x: float) -> float:
68
- return float<-(math.sin(double<-(x)))
68
+ return float<-math.sin(double<-x)
69
69
 
70
70
 
71
71
  function cos_f(x: float) -> float:
72
- return float<-(math.cos(double<-(x)))
72
+ return float<-math.cos(double<-x)
73
73
 
74
74
 
75
75
  function sqrt_f(x: float) -> float:
76
- return float<-(math.sqrt(double<-(x)))
76
+ return float<-math.sqrt(double<-x)
77
77
 
78
78
 
79
79
  function ease_out_bounce_f(t: float) -> float:
data/std/utility.mt CHANGED
@@ -64,8 +64,8 @@ function combine_scores(mode: CombineMode, scores: ref[vec.Vec[float]]) -> float
64
64
  return 0.0
65
65
  product = product * s
66
66
  i += 1
67
- let exponent = 1.0 / float<-(n)
68
- return float<-(math.pow(double<-(product), double<-(exponent)))
67
+ let exponent = 1.0 / float<-n
68
+ return float<-math.pow(double<-product, double<-exponent)
69
69
 
70
70
  if mode == CombineMode.multiplicative:
71
71
  var product: float = 1.0
@@ -88,7 +88,7 @@ function combine_scores(mode: CombineMode, scores: ref[vec.Vec[float]]) -> float
88
88
  break
89
89
  sum = sum + unsafe: read(s_ptr)
90
90
  i += 1
91
- return sum / float<-(n)
91
+ return sum / float<-n
92
92
 
93
93
  if mode == CombineMode.minimum:
94
94
  var best: float = 1.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mt-lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Long (Teefan) Tran
@@ -603,7 +603,7 @@ metadata:
603
603
  homepage_uri: https://teefan.github.io/mt-lang/
604
604
  source_code_uri: https://github.com/teefan/mt-lang
605
605
  post_install_message: |
606
- Milk Tea 0.3.8 installed!
606
+ Milk Tea 0.3.10 installed!
607
607
 
608
608
  System requirements:
609
609
  - A C compiler (gcc or clang) must be available on PATH