Merge branch 'master' of ssh://git.sideros.org:/git/sideros

This commit is contained in:
Lorenzo Torres 2025-03-28 19:57:19 +01:00
commit 669b8e5fee
4 changed files with 540 additions and 548 deletions

View file

@ -33,12 +33,11 @@ pub fn main() !void {
//var runtime = try mods.Runtime.init(allocator, module, &global_runtime); //var runtime = try mods.Runtime.init(allocator, module, &global_runtime);
//defer runtime.deinit(allocator); //defer runtime.deinit(allocator);
//var parameters = [_]usize{}; //var parameters = [_]usize{17};
//try runtime.callExternal(allocator, "preinit", &parameters); //try runtime.callExternal(allocator, "preinit", &parameters);
var w = try Renderer.Window.create(800, 600, "sideros"); var w = try Renderer.Window.create(800, 600, "sideros");
defer w.destroy(); defer w.destroy();
// TODO(luccie-cmd): Renderer.create shouldn't return an error
var r = try Renderer.create(allocator, w); var r = try Renderer.create(allocator, w);
defer r.destroy(); defer r.destroy();
@ -51,15 +50,18 @@ pub fn main() !void {
var pool = try ecs.Pool.init(allocator, resources); var pool = try ecs.Pool.init(allocator, resources);
defer pool.deinit(); defer pool.deinit();
w.setResources(&pool.resources); w.setResources(&pool.resources);
//try pool.addSystemGroup(&[_]entities.System{
// testSystem,
//});
// try pool.addSystemGroup(&[_]ecs.System{
// testSystem2,
// });
_ = try pool.createEntity(ecs.entities.Human{ // for (0..1000) |_| {
.position = .{ .x = 0.0, .y = 1.0, .z = 0.0 }, // const entity = try pool.createEntity();
.speed = .{ .speed = 5.0 }, // 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(&[_]ecs.System{
testSystem2,
});
while (!w.shouldClose()) { while (!w.shouldClose()) {
Renderer.Window.pollEvents(); Renderer.Window.pollEvents();

View file

@ -448,6 +448,7 @@ fn parseElemsec(self: *Parser) !void {
pub const Func = struct { pub const Func = struct {
locals: []Valtype, locals: []Valtype,
code: []const u8, code: []const u8,
ir: IR,
}; };
const Local = struct { const Local = struct {
n: u32, n: u32,
@ -477,6 +478,7 @@ fn parseCode(self: *Parser) !Func {
const func = Func{ const func = Func{
.locals = try self.allocator.alloc(Valtype, local_count), .locals = try self.allocator.alloc(Valtype, local_count),
.code = &.{}, .code = &.{},
.ir = ir,
}; };
var li: usize = 0; var li: usize = 0;

View file

@ -7,41 +7,41 @@ pub const IR = @import("ir.zig");
pub const GlobalRuntime = Wasm.GlobalRuntime; pub const GlobalRuntime = Wasm.GlobalRuntime;
pub const Runtime = VM.Runtime; pub const Runtime = VM.Runtime;
const std = @import("std"); // const std = @import("std");
test "Fibonacci" { // test "Fibonacci" {
// var gpa = std.heap.GeneralPurposeAllocator(.{}){}; // // var gpa = std.heap.GeneralPurposeAllocator(.{}){};
// const allocator = gpa.allocator(); // // const allocator = gpa.allocator();
const allocator = std.testing.allocator; // const allocator = std.testing.allocator;
var global_runtime = GlobalRuntime.init(allocator); // var global_runtime = GlobalRuntime.init(allocator);
defer global_runtime.deinit(); // defer global_runtime.deinit();
const file = try std.fs.cwd().openFile("assets/core.wasm", .{}); // const file = try std.fs.cwd().openFile("assets/core.wasm", .{});
const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB // const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB
var parser = Parser{ // var parser = Parser{
.bytes = all, // .bytes = all,
.byte_idx = 0, // .byte_idx = 0,
.allocator = allocator, // .allocator = allocator,
}; // };
const module = parser.parseModule() catch |err| { // 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] }); // std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] });
return err; // return err;
}; // };
var runtime = try Runtime.init(allocator, module, &global_runtime); // var runtime = try Runtime.init(allocator, module, &global_runtime);
defer runtime.deinit(allocator); // defer runtime.deinit(allocator);
var parameters = [_]usize{17}; // var parameters = [_]usize{17};
try runtime.callExternal(allocator, "preinit", &parameters); // try runtime.callExternal(allocator, "preinit", &parameters);
const result = runtime.stack.pop().?; // const result = runtime.stack.pop().?;
try std.testing.expect(result.i64 == 1597); // try std.testing.expect(result.i64 == 1597);
var parameters2 = [_]usize{1}; // var parameters2 = [_]usize{1};
try runtime.callExternal(allocator, "preinit", &parameters2); // try runtime.callExternal(allocator, "preinit", &parameters2);
const result2 = runtime.stack.pop().?; // const result2 = runtime.stack.pop().?;
try std.testing.expect(result2.i64 == 1); // try std.testing.expect(result2.i64 == 1);
var parameters3 = [_]usize{5}; // var parameters3 = [_]usize{5};
try runtime.callExternal(allocator, "preinit", &parameters3); // try runtime.callExternal(allocator, "preinit", &parameters3);
const result3 = runtime.stack.pop().?; // const result3 = runtime.stack.pop().?;
try std.testing.expect(result3.i64 == 5); // try std.testing.expect(result3.i64 == 5);
} // }

File diff suppressed because it is too large Load diff