From 04d650aeea54df2edc63c18235ce8591c212dfad Mon Sep 17 00:00:00 2001
From: forgejo-actions <+forgejo-actions@users.noreply.github.com>
Date: Mon, 19 May 2025 00:11:32 +0000
Subject: [PATCH 1/3] Sync to upstream Jecs 0.6.0-nightly.20250519T001113Z
---
jecs/README.md | 2 +-
jecs/build.txt | 4 ++--
jecs/jecs.luau | 4 ++--
jecs/pesde-rbx.toml | 2 +-
jecs/pesde.toml | 2 +-
jecs/test.txt | 2 +-
jecs/test_fulllog.txt | 4 ++--
jecs/wally.toml | 2 +-
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/jecs/README.md b/jecs/README.md
index d44797c..723874c 100644
--- a/jecs/README.md
+++ b/jecs/README.md
@@ -2,7 +2,7 @@
-[](LICENSE) [](https://wally.run/package/ukendio/jecs)
+[](LICENSE) [](https://wally.run/package/ukendio/jecs) [](https://github.com/Ukendio/jecs/actions/workflows/unit-testing.yaml)
Just a stupidly fast Entity Component System
diff --git a/jecs/build.txt b/jecs/build.txt
index df2f1ec..167581c 100644
--- a/jecs/build.txt
+++ b/jecs/build.txt
@@ -1,2 +1,2 @@
-modified = ["jecs.luau"]
-version = "0.6.0-nightly.20250517T001101Z"
+modified = ["README.md", "jecs.luau"]
+version = "0.6.0-nightly.20250519T001113Z"
diff --git a/jecs/jecs.luau b/jecs/jecs.luau
index 7f47472..0270110 100644
--- a/jecs/jecs.luau
+++ b/jecs/jecs.luau
@@ -2570,7 +2570,7 @@ export type World = {
range: (self: World, range_begin: number, range_end: number?) -> (),
--- Creates a new entity
- entity: (self: World, id: Entity?) -> Entity,
+ entity: (self: World, id: Entity?) -> Entity,
--- Creates a new entity located in the first 256 ids.
--- These should be used for static components for fast access.
component: (self: World) -> Entity,
@@ -2650,7 +2650,7 @@ return {
tag = (ECS_TAG :: any) :: () -> Entity,
meta = (ECS_META :: any) :: (id: Entity, id: Id, value: T) -> Entity,
is_tag = (ecs_is_tag :: any) :: (World, Id) -> boolean,
-
+
OnAdd = EcsOnAdd :: Entity<(entity: Entity, id: Id, data: T) -> ()>,
OnRemove = EcsOnRemove :: Entity<(entity: Entity, id: Id) -> ()>,
OnChange = EcsOnChange :: Entity<(entity: Entity, id: Id, data: T) -> ()>,
diff --git a/jecs/pesde-rbx.toml b/jecs/pesde-rbx.toml
index 495083b..f5a17c4 100644
--- a/jecs/pesde-rbx.toml
+++ b/jecs/pesde-rbx.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/pesde.toml b/jecs/pesde.toml
index ae74a14..f3ddfa0 100644
--- a/jecs/pesde.toml
+++ b/jecs/pesde.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/test.txt b/jecs/test.txt
index a948a92..f3b008a 100644
--- a/jecs/test.txt
+++ b/jecs/test.txt
@@ -1,2 +1,2 @@
passed = true
-timestamp = "20250518T001104Z"
+timestamp = "20250519T001115Z"
diff --git a/jecs/test_fulllog.txt b/jecs/test_fulllog.txt
index cab8c16..2b77688 100644
--- a/jecs/test_fulllog.txt
+++ b/jecs/test_fulllog.txt
@@ -1,5 +1,5 @@
[38;1m7.3[0m [33;1mus[0m [38;1m 3[0m [33;1mkB[0m[38;1m│[0m [38;1mdelete children of entity[0m
-[38;1m9.3[0m [33;1mus[0m [38;1m 1[0m [33;1mkB[0m[38;1m│[0m [38;1mremove friends of entity[0m
+[38;1m9.2[0m [33;1mus[0m [38;1m 1[0m [33;1mkB[0m[38;1m│[0m [38;1mremove friends of entity[0m
[38;1m348[0m [32;1mns[0m [38;1m 10[0m [32;1m B[0m[38;1m│[0m [38;1msimple deletion of entity[0m
[37;1mrepro[0m
[38;5;208mNONE[0m[38;1m│[0m [38;1m[0m
@@ -121,5 +121,5 @@
[32;1mPASS[0m[38;1m│[0m [38;1m#2[0m
[32;1mPASS[0m[38;1m│[0m [38;1m#3[0m
-[38;1m74/74 test cases passed in 32.645 ms.[0m
+[38;1m74/74 test cases passed in 33.314 ms.[0m
[32;1m0 fails[0m
diff --git a/jecs/wally.toml b/jecs/wally.toml
index 81b25d6..2a8d02b 100644
--- a/jecs/wally.toml
+++ b/jecs/wally.toml
@@ -5,4 +5,4 @@ license = "MIT"
name = "mark-marks/jecs-nightly"
realm = "shared"
registry = "https://github.com/UpliftGames/wally-index"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
From 75c362f80eb8410fa28eef920af25df50fb36f63 Mon Sep 17 00:00:00 2001
From: marked
Date: Mon, 19 May 2025 02:11:34 +0200
Subject: [PATCH 2/3] Sync to released Jecs 0.6.0-nightly.20250519T001113Z
(#68)
Reviewed-on: https://git.devmarked.win/marked/jecs-nightly/pulls/68
---
jecs/README.md | 2 +-
jecs/build.txt | 4 ++--
jecs/jecs.luau | 4 ++--
jecs/pesde-rbx.toml | 2 +-
jecs/pesde.toml | 2 +-
jecs/test.txt | 2 +-
jecs/test_fulllog.txt | 4 ++--
jecs/wally.toml | 2 +-
8 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/jecs/README.md b/jecs/README.md
index d44797c..723874c 100644
--- a/jecs/README.md
+++ b/jecs/README.md
@@ -2,7 +2,7 @@
-[](LICENSE) [](https://wally.run/package/ukendio/jecs)
+[](LICENSE) [](https://wally.run/package/ukendio/jecs) [](https://github.com/Ukendio/jecs/actions/workflows/unit-testing.yaml)
Just a stupidly fast Entity Component System
diff --git a/jecs/build.txt b/jecs/build.txt
index df2f1ec..167581c 100644
--- a/jecs/build.txt
+++ b/jecs/build.txt
@@ -1,2 +1,2 @@
-modified = ["jecs.luau"]
-version = "0.6.0-nightly.20250517T001101Z"
+modified = ["README.md", "jecs.luau"]
+version = "0.6.0-nightly.20250519T001113Z"
diff --git a/jecs/jecs.luau b/jecs/jecs.luau
index 7f47472..0270110 100644
--- a/jecs/jecs.luau
+++ b/jecs/jecs.luau
@@ -2570,7 +2570,7 @@ export type World = {
range: (self: World, range_begin: number, range_end: number?) -> (),
--- Creates a new entity
- entity: (self: World, id: Entity?) -> Entity,
+ entity: (self: World, id: Entity?) -> Entity,
--- Creates a new entity located in the first 256 ids.
--- These should be used for static components for fast access.
component: (self: World) -> Entity,
@@ -2650,7 +2650,7 @@ return {
tag = (ECS_TAG :: any) :: () -> Entity,
meta = (ECS_META :: any) :: (id: Entity, id: Id, value: T) -> Entity,
is_tag = (ecs_is_tag :: any) :: (World, Id) -> boolean,
-
+
OnAdd = EcsOnAdd :: Entity<(entity: Entity, id: Id, data: T) -> ()>,
OnRemove = EcsOnRemove :: Entity<(entity: Entity, id: Id) -> ()>,
OnChange = EcsOnChange :: Entity<(entity: Entity, id: Id, data: T) -> ()>,
diff --git a/jecs/pesde-rbx.toml b/jecs/pesde-rbx.toml
index 495083b..f5a17c4 100644
--- a/jecs/pesde-rbx.toml
+++ b/jecs/pesde-rbx.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/pesde.toml b/jecs/pesde.toml
index ae74a14..f3ddfa0 100644
--- a/jecs/pesde.toml
+++ b/jecs/pesde.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/test.txt b/jecs/test.txt
index a948a92..f3b008a 100644
--- a/jecs/test.txt
+++ b/jecs/test.txt
@@ -1,2 +1,2 @@
passed = true
-timestamp = "20250518T001104Z"
+timestamp = "20250519T001115Z"
diff --git a/jecs/test_fulllog.txt b/jecs/test_fulllog.txt
index cab8c16..2b77688 100644
--- a/jecs/test_fulllog.txt
+++ b/jecs/test_fulllog.txt
@@ -1,5 +1,5 @@
[38;1m7.3[0m [33;1mus[0m [38;1m 3[0m [33;1mkB[0m[38;1m│[0m [38;1mdelete children of entity[0m
-[38;1m9.3[0m [33;1mus[0m [38;1m 1[0m [33;1mkB[0m[38;1m│[0m [38;1mremove friends of entity[0m
+[38;1m9.2[0m [33;1mus[0m [38;1m 1[0m [33;1mkB[0m[38;1m│[0m [38;1mremove friends of entity[0m
[38;1m348[0m [32;1mns[0m [38;1m 10[0m [32;1m B[0m[38;1m│[0m [38;1msimple deletion of entity[0m
[37;1mrepro[0m
[38;5;208mNONE[0m[38;1m│[0m [38;1m[0m
@@ -121,5 +121,5 @@
[32;1mPASS[0m[38;1m│[0m [38;1m#2[0m
[32;1mPASS[0m[38;1m│[0m [38;1m#3[0m
-[38;1m74/74 test cases passed in 32.645 ms.[0m
+[38;1m74/74 test cases passed in 33.314 ms.[0m
[32;1m0 fails[0m
diff --git a/jecs/wally.toml b/jecs/wally.toml
index 81b25d6..2a8d02b 100644
--- a/jecs/wally.toml
+++ b/jecs/wally.toml
@@ -5,4 +5,4 @@ license = "MIT"
name = "mark-marks/jecs-nightly"
realm = "shared"
registry = "https://github.com/UpliftGames/wally-index"
-version = "0.6.0-nightly.20250517T001101Z"
+version = "0.6.0-nightly.20250519T001113Z"
From 8d9ac83b464d6dbd4387151e68e59ad38afa8905 Mon Sep 17 00:00:00 2001
From: forgejo-actions <+forgejo-actions@users.noreply.github.com>
Date: Tue, 20 May 2025 00:11:20 +0000
Subject: [PATCH 3/3] Sync to upstream Jecs 0.6.0-nightly.20250520T001101Z
---
jecs/addons/observers.luau | 63 ++++++++++++++++++++------------------
jecs/build.txt | 4 +--
jecs/pesde-rbx.toml | 2 +-
jecs/pesde.toml | 2 +-
jecs/test.txt | 2 +-
jecs/test_fulllog.txt | 6 ++--
jecs/wally.toml | 2 +-
7 files changed, 42 insertions(+), 39 deletions(-)
diff --git a/jecs/addons/observers.luau b/jecs/addons/observers.luau
index 0175060..b725e7c 100644
--- a/jecs/addons/observers.luau
+++ b/jecs/addons/observers.luau
@@ -2,15 +2,20 @@ local jecs = require("@jecs")
type Observer = {
callback: (jecs.Entity) -> (),
- query: jecs.Query<...jecs.Id>,
+ query: jecs.Query<...any>,
+}
+
+type Monitor = {
+ callback: (jecs.Entity, jecs.Entity) -> (),
+ queyr: jecs.Query
}
export type PatchedWorld = jecs.World & {
- added: (PatchedWorld, jecs.Id, (jecs.Entity, jecs.Id, T) -> ()) -> () -> (),
- removed: (PatchedWorld, jecs.Id, (jecs.Entity, jecs.Id) -> ()) -> () -> (),
- changed: (PatchedWorld, jecs.Id, (jecs.Entity, jecs.Id, T) -> ()) -> () -> (),
+ added: (PatchedWorld, jecs.Id, (e: jecs.Entity, id: jecs.Id, value: T) -> ()) -> () -> (),
+ removed: (PatchedWorld, jecs.Id, (e: jecs.Entity, id: jecs.Id) -> ()) -> () -> (),
+ changed: (PatchedWorld, jecs.Id, (e: jecs.Entity, id: jecs.Id, value: T) -> ()) -> () -> (),
observer: (PatchedWorld, Observer) -> (),
- monitor: (PatchedWorld, Observer) -> (),
+ monitor: (PatchedWorld, Monitor) -> (),
}
local function observers_new(world, description)
@@ -45,7 +50,6 @@ local function observers_new(world, description)
end
end
-
local function join(world, component)
local sparse_array = {}
local dense_array = {}
@@ -163,16 +167,16 @@ local function observers_add(world: jecs.World): PatchedWorld
listener(entity, id, value)
end
end
- local idr = world.component_index[component]
- if idr then
- local idr_hook_existing = idr.hooks.on_add
- if idr_hook_existing then
- table.insert(listeners, idr_hook_existing)
+ local existing_hook = world:get(component, jecs.OnAdd)
+ if existing_hook then
+ table.insert(listeners, existing_hook)
+ local idr = world.component_index[component]
+ if idr then
+ idr.hooks.on_add = on_add
end
- idr.hooks.on_add = on_add :: any
- else
- world:set(component, jecs.OnAdd, on_add)
end
+
+ world:set(component, jecs.OnAdd, on_add)
end
table.insert(listeners, fn)
return function()
@@ -197,16 +201,15 @@ local function observers_add(world: jecs.World): PatchedWorld
listener(entity, id, value)
end
end
- local idr = world.component_index[component]
- if idr then
- local idr_hook_existing = idr.hooks.on_change
- if idr_hook_existing then
- table.insert(listeners, idr_hook_existing)
+ local existing_hook = world:get(component, jecs.OnChange)
+ if existing_hook then
+ table.insert(listeners, existing_hook)
+ local idr = world.component_index[component]
+ if idr then
+ idr.hooks.on_change = on_change
end
- idr.hooks.on_change = on_change :: any
- else
- world:set(component, jecs.OnChange, on_change)
end
+ world:set(component, jecs.OnChange, on_change)
end
table.insert(listeners, fn)
return function()
@@ -231,16 +234,16 @@ local function observers_add(world: jecs.World): PatchedWorld
listener(entity, id, value)
end
end
- local idr = world.component_index[component]
- if idr then
- local idr_hook_existing = idr.hooks.on_remove
- if idr_hook_existing then
- table.insert(listeners, idr_hook_existing)
+ local existing_hook = world:get(component, jecs.OnRemove)
+ if existing_hook then
+ table.insert(listeners, existing_hook)
+ local idr = world.component_index[component]
+ if idr then
+ idr.hooks.on_remove = on_remove
end
- idr.hooks.on_remove = on_remove :: any
- else
- world:set(component, jecs.OnRemove, on_remove)
end
+
+ world:set(component, jecs.OnRemove, on_remove)
end
table.insert(listeners, fn)
return function()
diff --git a/jecs/build.txt b/jecs/build.txt
index 167581c..1ab250a 100644
--- a/jecs/build.txt
+++ b/jecs/build.txt
@@ -1,2 +1,2 @@
-modified = ["README.md", "jecs.luau"]
-version = "0.6.0-nightly.20250519T001113Z"
+modified = ["addons/observers.luau"]
+version = "0.6.0-nightly.20250520T001101Z"
diff --git a/jecs/pesde-rbx.toml b/jecs/pesde-rbx.toml
index f5a17c4..50592e6 100644
--- a/jecs/pesde-rbx.toml
+++ b/jecs/pesde-rbx.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250519T001113Z"
+version = "0.6.0-nightly.20250520T001101Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/pesde.toml b/jecs/pesde.toml
index f3ddfa0..fd6740f 100644
--- a/jecs/pesde.toml
+++ b/jecs/pesde.toml
@@ -3,7 +3,7 @@ includes = ["init.luau", "pesde.toml", "README.md", "CHANGELOG.md", "LICENSE", "
license = "MIT"
name = "marked/jecs_nightly"
repository = "https://git.devmarked.win/marked/jecs-nightly"
-version = "0.6.0-nightly.20250519T001113Z"
+version = "0.6.0-nightly.20250520T001101Z"
[indices]
default = "https://github.com/pesde-pkg/index"
diff --git a/jecs/test.txt b/jecs/test.txt
index f3b008a..e9dd3d6 100644
--- a/jecs/test.txt
+++ b/jecs/test.txt
@@ -1,2 +1,2 @@
passed = true
-timestamp = "20250519T001115Z"
+timestamp = "20250520T001103Z"
diff --git a/jecs/test_fulllog.txt b/jecs/test_fulllog.txt
index 2b77688..4afdb00 100644
--- a/jecs/test_fulllog.txt
+++ b/jecs/test_fulllog.txt
@@ -1,6 +1,6 @@
-[38;1m7.3[0m [33;1mus[0m [38;1m 3[0m [33;1mkB[0m[38;1m│[0m [38;1mdelete children of entity[0m
+[38;1m7.5[0m [33;1mus[0m [38;1m 3[0m [33;1mkB[0m[38;1m│[0m [38;1mdelete children of entity[0m
[38;1m9.2[0m [33;1mus[0m [38;1m 1[0m [33;1mkB[0m[38;1m│[0m [38;1mremove friends of entity[0m
-[38;1m348[0m [32;1mns[0m [38;1m 10[0m [32;1m B[0m[38;1m│[0m [38;1msimple deletion of entity[0m
+[38;1m347[0m [32;1mns[0m [38;1m 10[0m [32;1m B[0m[38;1m│[0m [38;1msimple deletion of entity[0m
[37;1mrepro[0m
[38;5;208mNONE[0m[38;1m│[0m [38;1m[0m
@@ -121,5 +121,5 @@
[32;1mPASS[0m[38;1m│[0m [38;1m#2[0m
[32;1mPASS[0m[38;1m│[0m [38;1m#3[0m
-[38;1m74/74 test cases passed in 33.314 ms.[0m
+[38;1m74/74 test cases passed in 30.716 ms.[0m
[32;1m0 fails[0m
diff --git a/jecs/wally.toml b/jecs/wally.toml
index 2a8d02b..d7ffcb9 100644
--- a/jecs/wally.toml
+++ b/jecs/wally.toml
@@ -5,4 +5,4 @@ license = "MIT"
name = "mark-marks/jecs-nightly"
realm = "shared"
registry = "https://github.com/UpliftGames/wally-index"
-version = "0.6.0-nightly.20250519T001113Z"
+version = "0.6.0-nightly.20250520T001101Z"