diff options
author | Ernesto Lanchares <elancha98@proton.me> | 2025-03-24 21:18:40 +0000 |
---|---|---|
committer | Lorenzo Torres <torres@sideros.org> | 2025-03-24 22:38:12 +0100 |
commit | 09691ec4d93cda6ab31d28d6e478257209fe625e (patch) | |
tree | b807d47ad7cf434a429b38804fadcbcc3b0a85c7 /src/main.zig | |
parent | 7cf43ccb8b8b1726c2697188b9138847780cd08e (diff) |
Some progress on IR parsing.
Alhtough IR parsing is technically called while
parsing, since we lack the hability to parse
blocks or labels or if or any hard stuff really,
it does not affect code parsing. However it is
nice to have it there as zig compiles it :)
Diffstat (limited to 'src/main.zig')
-rw-r--r-- | src/main.zig | 88 |
1 files changed, 42 insertions, 46 deletions
diff --git a/src/main.zig b/src/main.zig index ea74ca4..aaeaf38 100644 --- a/src/main.zig +++ b/src/main.zig @@ -21,58 +21,54 @@ fn testSystem2(pool: *ecs.Pool) void { pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const allocator = gpa.allocator(); - { - //var global_runtime = wasm.GlobalRuntime.init(allocator); - //defer global_runtime.deinit(); - //try global_runtime.addFunction("debug", wasm.debug); + defer if (gpa.deinit() != .ok) @panic("Leaked memory"); - // const file = try std.fs.cwd().openFile("assets/core.wasm", .{}); - // const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB - // var parser = mods.Parser{ - // .bytes = all, - // .byte_idx = 0, - // .allocator = allocator, - // }; - // const module = parser.parseModule() catch |err| { - // std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] }); - // return err; - // }; - // var runtime = try vm.Runtime.init(allocator, module, &global_runtime); - // defer runtime.deinit(allocator); + var global_runtime = mods.GlobalRuntime.init(allocator); + defer global_runtime.deinit(); + try global_runtime.addFunction("debug", mods.Wasm.debug); - //var parameters = [_]usize{}; - //try runtime.callExternal(allocator, "preinit", ¶meters); - const w = try window.Window.create(800, 600, "sideros"); - defer w.destroy(); + const file = try std.fs.cwd().openFile("assets/core.wasm", .{}); + const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB + var parser = mods.Parser{ + .bytes = all, + .byte_idx = 0, + .allocator = allocator, + }; + const module = parser.parseModule() catch |err| { + std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] }); + return err; + }; + var runtime = try mods.Runtime.init(allocator, module, &global_runtime); + defer runtime.deinit(allocator); - //var pool = try ecs.Pool.init(allocator); - //defer pool.deinit(allocator); + var parameters = [_]usize{}; + try runtime.callExternal(allocator, "preinit", ¶meters); + const w = try window.Window.create(800, 600, "sideros"); + defer w.destroy(); - ////try pool.addSystemGroup(&[_]entities.System{ - //// testSystem, - ////}); - //try pool.addSystemGroup(&[_]ecs.System{ - // testSystem2, - //}); + // var pool = try ecs.Pool.init(allocator); + // defer pool.deinit(allocator); - //for (0..1000) |_| { - // const entity = try pool.createEntity(); - // try pool.addComponent(entity, ecs.components.Position{ .x = 1.0, .y = 0.5, .z = 3.0 }); - // try pool.addComponent(entity, ecs.components.Speed{ .speed = 5.0 }); - //} + //try pool.addSystemGroup(&[_]entities.System{ + // testSystem, + //}); + // try pool.addSystemGroup(&[_]ecs.System{ + // testSystem2, + // }); - // TODO(luccie-cmd): Renderer.create shouldn't return an error - var r = try Renderer.create(allocator, w); - defer r.destroy(); + // for (0..1000) |_| { + // const entity = try pool.createEntity(); + // try pool.addComponent(entity, ecs.components.Position{ .x = 1.0, .y = 0.5, .z = 3.0 }); + // try pool.addComponent(entity, ecs.components.Speed{ .speed = 5.0 }); + // } - while (!w.shouldClose()) { - c.glfwPollEvents(); - try r.tick(); - //pool.tick(); - } - } + // TODO(luccie-cmd): Renderer.create shouldn't return an error + // var r = try Renderer.create(allocator, w); + // defer r.destroy(); - if (gpa.detectLeaks()) { - return error.leaked_memory; - } + // while (!w.shouldClose()) { + // c.glfwPollEvents(); + // try r.tick(); + // pool.tick(); + // } } |