From 45095191f4054f347fa059198ff7b8d1ad1b004d Mon Sep 17 00:00:00 2001 From: Ryan Ward Date: Sun, 24 Mar 2024 23:29:43 -0400 Subject: [PATCH] V16.0.1 (#68) * Fixed issue with pushstatus * Fixed bug with pushstatus --- README.md | 9 +------ docs/changes.md | 30 +++++++++++++++++++++++ init.lua | 5 ++-- rockspecs/multi-16.0-1.rockspec | 42 +++++++++++++++++++++++++++++++++ 4 files changed, 76 insertions(+), 10 deletions(-) create mode 100644 rockspecs/multi-16.0-1.rockspec diff --git a/README.md b/README.md index 32cc770..dbec4df 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,4 @@ -# Multi Version: 16.0.0 - Connecting the dots -**Key Changes** -- Expanded connection logic -- New integration priorityManager -- Tests for threads -- Consistent behavior between the threading integrations -- Improved love2d threading -- Bug fixes +# Multi Version: 16.0.1 - Bug fix Found an issue? Please [submit it](https://github.com/rayaman/multi/issues) and someone will look into it! diff --git a/docs/changes.md b/docs/changes.md index 9ea6f80..2b2a6d6 100644 --- a/docs/changes.md +++ b/docs/changes.md @@ -1,6 +1,7 @@ # Changelog Table of contents --- +[Update 16.0.1 - Bug fix](#update-1531---bug-fix)
[Update 16.0.0 - Connecting the dots](#update-1600---getting-the-priorities-straight)
[Update 15.3.1 - Bug fix](#update-1531---bug-fix)
[Update 15.3.0 - A world of connections](#update-1530---a-world-of-connections)
@@ -58,6 +59,35 @@ Table of contents [Update: EventManager 1.0.0 - Error checking](#update-eventmanager-100---error-checking)
[Version: EventManager 0.0.1 - In The Beginning things were very different](#version-eventmanager-001---in-the-beginning-things-were-very-different) +# Update 16.0.1 - Bug fix +Fixed +--- +- thread.pushStatus() wasn't properly working when forwarding events from THREAD.pushStatus OnStatus connection. This bug also caused stack overflow errors with the following code +```lua +func = thread:newFunction(function() + for i=1,10 do + thread.sleep(1) + thread.pushStatus(i) + end +end) + +func2 = thread:newFunction(function() + local ref = func() + ref.OnStatus(function(num) + -- do stuff with this data + + thread.pushStatus(num*2) -- Technically this is not ran within a thread. This is ran outside of a thread inside the thread handler. + end) +end) + +local handler = func2() +handler.OnStatus(function(num) + print(num) +end) + +multi:mainloop() +``` + # Update 16.0.0 - Getting the priorities straight ## Added New Integration: **priorityManager** diff --git a/init.lua b/init.lua index a197fb4..9543ce5 100644 --- a/init.lua +++ b/init.lua @@ -86,7 +86,7 @@ function multi.getTypes() return types end -multi.Version = "16.0.0" +multi.Version = "16.0.1" multi.Name = "root" multi.NIL = {Type="NIL"} local NIL = multi.NIL @@ -447,6 +447,7 @@ function multi:newConnection(protect,func,kill) func = function(...) __CurrentConnectionThread = th fref(...) + __CurrentConnectionThread = nil end end table.insert(fast, func) @@ -1435,7 +1436,7 @@ local function cleanReturns(...) end function thread.pushStatus(...) - local t = thread.getRunningThread() or __CurrentConnectionThread + local t = __CurrentConnectionThread or thread.getRunningThread() t.statusconnector:Fire(...) end diff --git a/rockspecs/multi-16.0-1.rockspec b/rockspecs/multi-16.0-1.rockspec new file mode 100644 index 0000000..4ddb730 --- /dev/null +++ b/rockspecs/multi-16.0-1.rockspec @@ -0,0 +1,42 @@ +package = "multi" +version = "16.0-1" +source = { + url = "git://github.com/rayaman/multi.git", + tag = "v16.0.1", +} +description = { + summary = "Lua Multi tasking library", + detailed = [[ + This library contains many methods for multi tasking. Features non coroutine based multi-tasking, coroutine based multi-tasking, and system threading (Requires use of an integration). + Check github for documentation. + ]], + homepage = "https://github.com/rayaman/multi", + license = "MIT" +} +dependencies = { + "lua >= 5.1" +} +build = { + type = "builtin", + modules = { + ["multi"] = "init.lua", + ["multi.integration.lanesManager"] = "integration/lanesManager/init.lua", + ["multi.integration.lanesManager.extensions"] = "integration/lanesManager/extensions.lua", + ["multi.integration.lanesManager.threads"] = "integration/lanesManager/threads.lua", + ["multi.integration.loveManager"] = "integration/loveManager/init.lua", + ["multi.integration.loveManager.extensions"] = "integration/loveManager/extensions.lua", + ["multi.integration.loveManager.threads"] = "integration/loveManager/threads.lua", + ["multi.integration.loveManager.utils"] = "integration/loveManager/threads.lua", + --["multi.integration.lovrManager"] = "integration/lovrManager/init.lua", + --["multi.integration.lovrManager.extensions"] = "integration/lovrManager/extensions.lua", + --["multi.integration.lovrManager.threads"] = "integration/lovrManager/threads.lua", + ["multi.integration.pseudoManager"] = "integration/pseudoManager/init.lua", + ["multi.integration.pseudoManager.extensions"] = "integration/pseudoManager/extensions.lua", + ["multi.integration.pseudoManager.threads"] = "integration/pseudoManager/threads.lua", + ["multi.integration.luvitManager"] = "integration/luvitManager.lua", + ["multi.integration.threading"] = "integration/threading.lua", + ["multi.integration.sharedExtensions"] = "integration/sharedExtensions/init.lua", + ["multi.integration.priorityManager"] = "integration/priorityManager/init.lua", + --["multi.integration.networkManager"] = "integration/networkManager.lua", + } +} \ No newline at end of file