mt-lang 0.3.9 → 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.
- checksums.yaml +4 -4
- data/lib/milk_tea/base.rb +1 -2
- data/lib/milk_tea/bindings/bindgen/ast_parser.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/declaration.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/emitter.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/overrides.rb +0 -2
- data/lib/milk_tea/bindings/bindgen/type_mapper.rb +51 -53
- data/lib/milk_tea/bindings/imported_bindings/generator.rb +7 -9
- data/lib/milk_tea/bindings/imported_bindings/method_source.rb +0 -2
- data/lib/milk_tea/bindings/imported_bindings/naming.rb +6 -8
- data/lib/milk_tea/bindings/imported_bindings.rb +0 -2
- data/lib/milk_tea/bindings/opengl_registry.rb +3 -7
- data/lib/milk_tea/bindings/steamworks.rb +12 -16
- data/lib/milk_tea/bindings/upstream_sources.rb +10 -14
- data/lib/milk_tea/bindings/vendored_box2d.rb +10 -12
- data/lib/milk_tea/bindings/vendored_cjson.rb +6 -8
- data/lib/milk_tea/bindings/vendored_flecs.rb +10 -12
- data/lib/milk_tea/bindings/vendored_glfw.rb +11 -13
- data/lib/milk_tea/bindings/vendored_libuv.rb +11 -13
- data/lib/milk_tea/bindings/vendored_pcre2.rb +11 -13
- data/lib/milk_tea/bindings/vendored_raylib.rb +6 -10
- data/lib/milk_tea/bindings/vendored_sdl3.rb +11 -13
- data/lib/milk_tea/bindings/vendored_steamworks.rb +1 -5
- data/lib/milk_tea/core/ast.rb +103 -45
- data/lib/milk_tea/core/async_runtime_installer.rb +0 -2
- data/lib/milk_tea/core/bindings/attribute_binding.rb +1 -3
- data/lib/milk_tea/core/c_backend/aggregate_utils.rb +147 -84
- data/lib/milk_tea/core/c_backend/control_flow_emission.rb +394 -396
- data/lib/milk_tea/core/c_backend/expressions.rb +489 -476
- data/lib/milk_tea/core/c_backend/feature_detection.rb +446 -437
- data/lib/milk_tea/core/c_backend/format_helpers.rb +0 -2
- data/lib/milk_tea/core/c_backend/reachability.rb +339 -341
- data/lib/milk_tea/core/c_backend/reinterpret.rb +231 -217
- data/lib/milk_tea/core/c_backend/runtime_helpers.rb +531 -526
- data/lib/milk_tea/core/c_backend/statements.rb +528 -530
- data/lib/milk_tea/core/c_backend/type_collectors.rb +1344 -1346
- data/lib/milk_tea/core/c_backend/type_declaration.rb +215 -213
- data/lib/milk_tea/core/c_backend/type_system.rb +347 -349
- data/lib/milk_tea/core/c_backend.rb +17 -9
- data/lib/milk_tea/core/compatibility_helpers.rb +0 -2
- data/lib/milk_tea/core/compile_time/const_eval.rb +7 -12
- data/lib/milk_tea/core/compile_time.rb +32 -38
- data/lib/milk_tea/core/control_flow/builder.rb +3 -5
- data/lib/milk_tea/core/control_flow/constant_propagation.rb +14 -17
- data/lib/milk_tea/core/control_flow/definite_assignment.rb +0 -1
- data/lib/milk_tea/core/ir.rb +10 -10
- data/lib/milk_tea/core/lexer/character_classes.rb +5 -7
- data/lib/milk_tea/core/lexer/format_strings.rb +7 -9
- data/lib/milk_tea/core/lexer/heredocs.rb +22 -22
- data/lib/milk_tea/core/lexer/indentation.rb +0 -2
- data/lib/milk_tea/core/lexer/numbers.rb +0 -2
- data/lib/milk_tea/core/lexer/recovery.rb +0 -2
- data/lib/milk_tea/core/lexer/strings.rb +0 -2
- data/lib/milk_tea/core/lexer/symbols.rb +0 -2
- data/lib/milk_tea/core/lexer/trivia.rb +0 -2
- data/lib/milk_tea/core/lexer.rb +0 -2
- data/lib/milk_tea/core/lowering/async/analysis.rb +0 -2
- data/lib/milk_tea/core/lowering/async/lowering.rb +1264 -1265
- data/lib/milk_tea/core/lowering/async/normalization.rb +0 -2
- data/lib/milk_tea/core/lowering/async.rb +627 -630
- data/lib/milk_tea/core/lowering/block.rb +413 -416
- data/lib/milk_tea/core/lowering/calls.rb +1381 -1384
- data/lib/milk_tea/core/lowering/declarations.rb +180 -183
- data/lib/milk_tea/core/lowering/dyn.rb +48 -50
- data/lib/milk_tea/core/lowering/events.rb +983 -985
- data/lib/milk_tea/core/lowering/expressions.rb +1513 -1518
- data/lib/milk_tea/core/lowering/foreign_cstr.rb +181 -184
- data/lib/milk_tea/core/lowering/functions.rb +185 -188
- data/lib/milk_tea/core/lowering/loops.rb +1028 -1031
- data/lib/milk_tea/core/lowering/proc.rb +363 -366
- data/lib/milk_tea/core/lowering/resolve.rb +2133 -2135
- data/lib/milk_tea/core/lowering/scans.rb +179 -181
- data/lib/milk_tea/core/lowering/str_buffer.rb +102 -105
- data/lib/milk_tea/core/lowering/utils.rb +1040 -1044
- data/lib/milk_tea/core/lowering.rb +5 -7
- data/lib/milk_tea/core/module_binder.rb +0 -2
- data/lib/milk_tea/core/module_loader/errors.rb +4 -2
- data/lib/milk_tea/core/module_loader.rb +113 -20
- data/lib/milk_tea/core/module_path_resolver.rb +0 -2
- data/lib/milk_tea/core/module_roots.rb +6 -8
- data/lib/milk_tea/core/parser/attributes.rb +0 -2
- data/lib/milk_tea/core/parser/blocks.rb +0 -2
- data/lib/milk_tea/core/parser/declarations.rb +0 -2
- data/lib/milk_tea/core/parser/expressions.rb +8 -9
- data/lib/milk_tea/core/parser/recovery.rb +0 -2
- data/lib/milk_tea/core/parser/statements.rb +0 -2
- data/lib/milk_tea/core/parser/types.rb +8 -10
- data/lib/milk_tea/core/parser.rb +0 -2
- data/lib/milk_tea/core/pretty_printer/ast_formatter.rb +31 -33
- data/lib/milk_tea/core/pretty_printer/base_formatter.rb +0 -2
- data/lib/milk_tea/core/pretty_printer/ir_formatter.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/analysis_context.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/attributes.rb +14 -16
- data/lib/milk_tea/core/semantic_analyzer/calls.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/expressions.rb +1 -14
- data/lib/milk_tea/core/semantic_analyzer/flow_refinement.rb +18 -21
- data/lib/milk_tea/core/semantic_analyzer/foreign_functions.rb +0 -3
- data/lib/milk_tea/core/semantic_analyzer/function_binding.rb +12 -15
- data/lib/milk_tea/core/semantic_analyzer/generics.rb +57 -59
- data/lib/milk_tea/core/semantic_analyzer/interface_conformance.rb +0 -2
- data/lib/milk_tea/core/semantic_analyzer/name_resolution.rb +5 -9
- data/lib/milk_tea/core/semantic_analyzer/nullability.rb +0 -3
- data/lib/milk_tea/core/semantic_analyzer/statements.rb +35 -40
- data/lib/milk_tea/core/semantic_analyzer/top_level.rb +10 -12
- data/lib/milk_tea/core/semantic_analyzer/type_compatibility.rb +0 -6
- data/lib/milk_tea/core/semantic_analyzer/type_declaration.rb +102 -105
- data/lib/milk_tea/core/semantic_analyzer.rb +17 -8
- data/lib/milk_tea/core/types/layout.rb +21 -22
- data/lib/milk_tea/core/types/predicates.rb +0 -2
- data/lib/milk_tea/core/types/registry.rb +16 -18
- data/lib/milk_tea/core/types/visitor.rb +0 -4
- data/lib/milk_tea/dap/backends/lldb_dap.rb +0 -2
- data/lib/milk_tea/dap/protocol.rb +1 -1
- data/lib/milk_tea/dap/server/breakpoints.rb +0 -2
- data/lib/milk_tea/dap/server/debug_map.rb +0 -2
- data/lib/milk_tea/dap/server/handlers.rb +0 -2
- data/lib/milk_tea/dap/server/launch.rb +0 -2
- data/lib/milk_tea/dap/server/lldb_backend.rb +8 -10
- data/lib/milk_tea/dap/server/pause_diagnostics.rb +14 -16
- data/lib/milk_tea/dap/server/utilities.rb +0 -2
- data/lib/milk_tea/dap/server/wire.rb +0 -2
- data/lib/milk_tea/dap/server.rb +0 -2
- data/lib/milk_tea/lsp/diagnostics.rb +16 -16
- data/lib/milk_tea/lsp/server/call_hierarchy.rb +11 -12
- data/lib/milk_tea/lsp/server/code_actions.rb +355 -357
- data/lib/milk_tea/lsp/server/code_lens.rb +23 -25
- data/lib/milk_tea/lsp/server/completion.rb +873 -875
- data/lib/milk_tea/lsp/server/configuration.rb +129 -131
- data/lib/milk_tea/lsp/server/debug_info.rb +0 -2
- data/lib/milk_tea/lsp/server/definition.rb +564 -565
- data/lib/milk_tea/lsp/server/diagnostics_scheduling.rb +191 -193
- data/lib/milk_tea/lsp/server/execute_command.rb +0 -2
- data/lib/milk_tea/lsp/server/folding_range.rb +0 -4
- data/lib/milk_tea/lsp/server/formatting.rb +478 -480
- data/lib/milk_tea/lsp/server/hover.rb +1282 -1284
- data/lib/milk_tea/lsp/server/inlay_hints.rb +179 -181
- data/lib/milk_tea/lsp/server/lifecycle.rb +192 -194
- data/lib/milk_tea/lsp/server/linked_editing_range.rb +0 -2
- data/lib/milk_tea/lsp/server/on_type_formatting.rb +0 -2
- data/lib/milk_tea/lsp/server/progress.rb +0 -2
- data/lib/milk_tea/lsp/server/references.rb +316 -318
- data/lib/milk_tea/lsp/server/rename.rb +445 -447
- data/lib/milk_tea/lsp/server/selection_range.rb +0 -4
- data/lib/milk_tea/lsp/server/semantic_tokens.rb +1318 -1320
- data/lib/milk_tea/lsp/server/signature_help.rb +146 -148
- data/lib/milk_tea/lsp/server/text_documents.rb +99 -101
- data/lib/milk_tea/lsp/server/type_hierarchy.rb +2 -4
- data/lib/milk_tea/lsp/server/utilities.rb +397 -399
- data/lib/milk_tea/lsp/server.rb +0 -3
- data/lib/milk_tea/lsp/workspace/analysis.rb +40 -42
- data/lib/milk_tea/lsp/workspace/dependency_graph.rb +4 -10
- data/lib/milk_tea/lsp/workspace/utilities.rb +19 -19
- data/lib/milk_tea/packages/atomic_write.rb +4 -5
- data/lib/milk_tea/packages/dependency_solver.rb +15 -15
- data/lib/milk_tea/packages/lock.rb +4 -4
- data/lib/milk_tea/packages/manager_cli.rb +1 -1
- data/lib/milk_tea/packages/manifest.rb +3 -3
- data/lib/milk_tea/packages/registry_store.rb +4 -6
- data/lib/milk_tea/packages/services.rb +16 -16
- data/lib/milk_tea/packages/source_cache.rb +4 -6
- data/lib/milk_tea/packages/source_resolver.rb +44 -44
- data/lib/milk_tea/packages/version.rb +8 -8
- data/lib/milk_tea/tooling/build.rb +3 -7
- data/lib/milk_tea/tooling/build_cache.rb +0 -2
- data/lib/milk_tea/tooling/debug_info_formatter.rb +31 -33
- data/lib/milk_tea/tooling/debug_map.rb +8 -10
- data/lib/milk_tea/tooling/docs_app.rb +0 -2
- data/lib/milk_tea/tooling/linter/doc_tags.rb +25 -27
- data/lib/milk_tea/tooling/linter/fix_engine.rb +87 -24
- data/lib/milk_tea/tooling/linter/flow_rules.rb +44 -46
- data/lib/milk_tea/tooling/linter/imports_platform.rb +14 -16
- data/lib/milk_tea/tooling/linter/release_rules.rb +3 -5
- data/lib/milk_tea/tooling/linter/reserved_names.rb +23 -25
- data/lib/milk_tea/tooling/linter/rules.rb +87 -89
- data/lib/milk_tea/tooling/linter/source_helpers.rb +40 -42
- data/lib/milk_tea/tooling/linter/trailing_comma.rb +17 -19
- data/lib/milk_tea/tooling/linter/visitors.rb +112 -54
- data/lib/milk_tea/tooling/linter.rb +0 -2
- data/lib/milk_tea/tooling/project_scaffold.rb +0 -2
- data/lib/milk_tea/tooling/run.rb +0 -2
- data/lib/milk_tea/tooling/toolchain_cli.rb +0 -2
- data/std/cli.mt +13 -32
- data/std/color.mt +28 -28
- data/std/encoding.mt +4 -4
- data/std/graph.mt +1 -2
- data/std/hash.mt +14 -14
- data/std/http/server.mt +3 -3
- data/std/input.mt +1 -1
- data/std/json.mt +1 -1
- data/std/linear_algebra.mt +6 -6
- data/std/net/mux.mt +1 -1
- data/std/noise.mt +23 -23
- data/std/parse.mt +2 -2
- data/std/process.mt +3 -4
- data/std/sparse_set.mt +1 -1
- data/std/steering.mt +5 -5
- data/std/str.mt +1 -1
- data/std/tween.mt +4 -4
- data/std/utility.mt +3 -3
- metadata +2 -2
data/std/graph.mt
CHANGED
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<-
|
|
20
|
-
h = (h ^ ((as_uint >> uint<-
|
|
21
|
-
h = (h ^ ((as_uint >> uint<-
|
|
22
|
-
h = (h ^ ((as_uint >> uint<-
|
|
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<-
|
|
53
|
-
h = (h ^ (uint<-(ubyte<-((v >> uint<-
|
|
54
|
-
h = (h ^ (uint<-(ubyte<-((v >> uint<-
|
|
55
|
-
h = (h ^ (uint<-(ubyte<-((v >> uint<-
|
|
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<-
|
|
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<-
|
|
197
|
-
h = (h ^ ((value >> uint<-
|
|
198
|
-
h = (h ^ ((value >> uint<-
|
|
199
|
-
h = (h ^ ((value >> uint<-
|
|
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<-
|
|
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 =
|
|
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<-
|
|
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 =
|
|
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
|
-
|
|
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(
|
|
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)))
|
data/std/linear_algebra.mt
CHANGED
|
@@ -22,7 +22,7 @@ extending vec2:
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
public function length() -> float:
|
|
25
|
-
return float<-math.sqrt(double<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
51
|
-
let iy = int<-
|
|
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<-
|
|
61
|
-
let B = int<-
|
|
62
|
-
let aa = int<-
|
|
63
|
-
let ab = int<-
|
|
64
|
-
let ba = int<-
|
|
65
|
-
let bb = int<-
|
|
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<-
|
|
75
|
-
let iy = int<-
|
|
76
|
-
let iz = int<-
|
|
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<-
|
|
89
|
-
let AA = int<-
|
|
90
|
-
let AB = int<-
|
|
91
|
-
let B = int<-
|
|
92
|
-
let BA = int<-
|
|
93
|
-
let BB = int<-
|
|
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<-
|
|
96
|
-
let x2 = lerp(grad3d(int<-
|
|
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<-
|
|
100
|
-
let x4 = lerp(grad3d(int<-
|
|
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<-
|
|
110
|
-
if x < 0.0 and float<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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
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<-
|
|
85
|
-
let wy = circle_center.y + wander_radius * float<-
|
|
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<-
|
|
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<-
|
|
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<-
|
|
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
|
-
|
|
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<-
|
|
64
|
+
return float<-math.pow(double<-base, double<-exp)
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
function sin_f(x: float) -> float:
|
|
68
|
-
return float<-
|
|
68
|
+
return float<-math.sin(double<-x)
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
function cos_f(x: float) -> float:
|
|
72
|
-
return float<-
|
|
72
|
+
return float<-math.cos(double<-x)
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
function sqrt_f(x: float) -> float:
|
|
76
|
-
return float<-
|
|
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<-
|
|
68
|
-
return float<-
|
|
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<-
|
|
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.
|
|
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.
|
|
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
|