Browse Source

Change: change GlobalState to internal

Akeit0 4 months ago
parent
commit
2a78b994b0

+ 1 - 1
sandbox/Benchmark/InterpreterSteps.cs

@@ -33,7 +33,7 @@ public class InterpreterSteps
     [Benchmark]
     [Benchmark]
     public void CreateState()
     public void CreateState()
     {
     {
-        LuaGlobalState.Create();
+        LuaState.Create();
     }
     }
 
 
 
 

+ 1 - 2
sandbox/ConsoleApp1/Program.cs

@@ -8,9 +8,8 @@ using System.IO;
 using System.Text;
 using System.Text;
 
 
 var state = LuaState.Create();
 var state = LuaState.Create();
-var globalState = state.GlobalState;
 state.OpenStandardLibraries();
 state.OpenStandardLibraries();
-globalState.Environment["escape"] = new LuaFunction("escape",
+state.Environment["escape"] = new LuaFunction("escape",
     (c, _) =>
     (c, _) =>
     {
     {
         var arg = c.HasArgument(0) ? c.GetArgument<string>(0) : "";
         var arg = c.HasArgument(0) ? c.GetArgument<string>(0) : "";

+ 2 - 2
sandbox/ConsoleApp2/Program.cs

@@ -7,7 +7,7 @@ var state = LuaState.Create();
 state.OpenStandardLibraries();
 state.OpenStandardLibraries();
 {
 {
     var closure = state.Load("return function (a,b,...)  print('a : '..a..' b :'..'args : ',...) end", "@simple");
     var closure = state.Load("return function (a,b,...)  print('a : '..a..' b :'..'args : ',...) end", "@simple");
-    using var access = LuaState.Create(state.GlobalState);
+    using var access = state.CreateThread();
     {
     {
         var count = await access.RunAsync(closure, 0);
         var count = await access.RunAsync(closure, 0);
         var results = access.ReadTopValues(count);
         var results = access.ReadTopValues(count);
@@ -42,7 +42,7 @@ state.OpenStandardLibraries();
         end
         end
         """, "coroutine");
         """, "coroutine");
     var f = results[0].Read<LuaClosure>();
     var f = results[0].Read<LuaClosure>();
-    using var coroutine = LuaState.CreateCoroutine(state.GlobalState,(f));
+    using var coroutine = state.CreateCoroutine(f);
     {
     {
         var stack = new LuaStack();
         var stack = new LuaStack();
         stack.PushRange("a", "b", "c", "d", "e");
         stack.PushRange("a", "b", "c", "d", "e");

+ 1 - 0
sandbox/JitTest/JitTest.csproj

@@ -6,6 +6,7 @@
         <LangVersion>13</LangVersion>
         <LangVersion>13</LangVersion>
         <ImplicitUsings>enable</ImplicitUsings>
         <ImplicitUsings>enable</ImplicitUsings>
         <Nullable>enable</Nullable>
         <Nullable>enable</Nullable>
+        <AllowUnsafeBlocks >true</AllowUnsafeBlocks>
     </PropertyGroup>
     </PropertyGroup>
 
 
     <ItemGroup>
     <ItemGroup>

+ 5 - 23
src/Lua.Unity/Assets/Lua.Unity/Runtime/LuaThreadAssetExtensions.cs

@@ -7,21 +7,8 @@ namespace Lua.Unity
 {
 {
     public static class LuaThreadAssetExtensions
     public static class LuaThreadAssetExtensions
     {
     {
-        public static ValueTask<LuaValue[]> ExecuteAsync(this LuaThreadAccess access, LuaAssetBase luaAssetBase, string name, CancellationToken cancellationToken = default)
-        {
-            if (luaAssetBase == null)
-            {
-                throw new ArgumentNullException(nameof(luaAssetBase));
-            }
-
-            var module = luaAssetBase.GetModule(name);
-            var closure = module.Type == LuaModuleType.Bytes
-                ? access.State.Load(module.ReadBytes(), module.Name)
-                : access.State.Load(module.ReadText(), module.Name);
-            return access.ExecuteAsync(closure, cancellationToken);
-        }
 
 
-        public static ValueTask<int> ExecuteAsync(this LuaThreadAccess access, LuaAssetBase luaAssetBase, string name, Memory<LuaValue> buffer, CancellationToken cancellationToken = default)
+        public static ValueTask<int> ExecuteAsync(this LuaState state, LuaAssetBase luaAssetBase, string name, Memory<LuaValue> buffer, CancellationToken cancellationToken = default)
         {
         {
             if (luaAssetBase == null)
             if (luaAssetBase == null)
             {
             {
@@ -30,19 +17,14 @@ namespace Lua.Unity
 
 
             var module = luaAssetBase.GetModule(name);
             var module = luaAssetBase.GetModule(name);
             var closure = module.Type == LuaModuleType.Bytes
             var closure = module.Type == LuaModuleType.Bytes
-                ? access.State.Load(module.ReadBytes(), module.Name)
-                : access.State.Load(module.ReadText(), module.Name);
-            return access.ExecuteAsync(closure, buffer, cancellationToken);
+                ? state.Load(module.ReadBytes(), module.Name)
+                : state.Load(module.ReadText(), module.Name);
+            return state.ExecuteAsync(closure, buffer, cancellationToken);
         }
         }
 
 
         public static ValueTask<LuaValue[]> ExecuteAsync(this LuaState state, LuaAssetBase luaAssetBase, string name, CancellationToken cancellationToken = default)
         public static ValueTask<LuaValue[]> ExecuteAsync(this LuaState state, LuaAssetBase luaAssetBase, string name, CancellationToken cancellationToken = default)
         {
         {
-            return state.RootAccess.ExecuteAsync(luaAssetBase, name, cancellationToken);
-        }
-
-        public static ValueTask<int> ExecuteAsync(this LuaState state, LuaAssetBase luaAssetBase, string name, Memory<LuaValue> buffer, CancellationToken cancellationToken = default)
-        {
-            return state.RootAccess.ExecuteAsync(luaAssetBase, name, buffer, cancellationToken);
+            return state.ExecuteAsync(luaAssetBase, name, cancellationToken);
         }
         }
     }
     }
 }
 }

+ 40 - 5
src/Lua.Unity/Assets/Sandbox/Sandbox.cs

@@ -5,19 +5,22 @@ using Lua.Loaders;
 using Lua.Platforms;
 using Lua.Platforms;
 using Lua.Standard;
 using Lua.Standard;
 using Lua.Unity;
 using Lua.Unity;
+using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 using UnityEngine;
 
 
 public class Sandbox : MonoBehaviour
 public class Sandbox : MonoBehaviour
 {
 {
     async void Start()
     async void Start()
     {
     {
+        
         var state = LuaState.Create( new LuaPlatform(
         var state = LuaState.Create( new LuaPlatform(
-            fileSystem: new FileSystem(Application.streamingAssetsPath),
-            osEnvironment: new UnityApplicationOsEnvironment(),
-            standardIO: new UnityStandardIO(),
-            timeProvider: TimeProvider.System
+            FileSystem: new FileSystem(Application.streamingAssetsPath),
+            OsEnvironment: new UnityApplicationOsEnvironment(),
+            StandardIO: new UnityStandardIO(),
+            TimeProvider: TimeProvider.System
         ));
         ));
-        state.ModuleLoader = CompositeModuleLoader.Create(new AddressablesModuleLoader(), new ResourcesModuleLoader());
+        state.GlobalState.ModuleLoader = CompositeModuleLoader.Create(new AddressablesModuleLoader(), new ResourcesModuleLoader());
         state.OpenStandardLibraries();
         state.OpenStandardLibraries();
         state.Environment["print"] = new LuaFunction("print", (context, ct) =>
         state.Environment["print"] = new LuaFunction("print", (context, ct) =>
         {
         {
@@ -45,4 +48,36 @@ s.f()
             Debug.LogException(ex);
             Debug.LogException(ex);
         }
         }
     }
     }
+    
+    MeshTopology[ ] topologies = Enum.GetValues(typeof(MeshTopology)) as MeshTopology[];
+    public bool ContainsTriangle;
+
+    void Update()
+    {
+        if (Input.GetKeyDown(KeyCode.Space))
+        {
+            ContainsTriangle=(topologies.Contains( MeshTopology.Points));
+            
+            Debug.Break();
+        }
+        
+        if (Input.GetKeyDown(KeyCode.A))
+        {
+            ContainsTriangle=(ContainsInArray(topologies, MeshTopology.Points));
+            
+            Debug.Break();
+        }
+    }
+    
+    bool ContainsInArray<T>(T[] array, T value)
+    {
+        foreach (var item in array)
+        {
+            if (EqualityComparer<T>.Default.Equals(item, value))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
 }
 }

+ 2 - 2
src/Lua/Exceptions.cs

@@ -338,7 +338,7 @@ public class LuaRuntimeException : Exception, ILuaTracebackBuildable
                 return null;
                 return null;
             }
             }
 
 
-            luaTraceback = new(State.GlobalState, callStack);
+            luaTraceback = new(State, callStack);
             State.ExceptionTrace.Clear();
             State.ExceptionTrace.Clear();
             State = null;
             State = null;
         }
         }
@@ -498,7 +498,7 @@ public sealed class LuaCanceledException : OperationCanceledException, ILuaTrace
                 return null;
                 return null;
             }
             }
 
 
-            luaTraceback = new(State.GlobalState, callStack);
+            luaTraceback = new(State, callStack);
             State.ExceptionTrace.Clear();
             State.ExceptionTrace.Clear();
             State = null!;
             State = null!;
         }
         }

+ 1 - 6
src/Lua/LuaGlobalState.cs → src/Lua/Internal/LuaGlobalState.cs

@@ -1,18 +1,13 @@
-using Lua.CodeAnalysis.Compilation;
 using System.Diagnostics.CodeAnalysis;
 using System.Diagnostics.CodeAnalysis;
 using System.Runtime.CompilerServices;
 using System.Runtime.CompilerServices;
 using Lua.Internal;
 using Lua.Internal;
-using Lua.IO;
-using Lua.Loaders;
 using Lua.Platforms;
 using Lua.Platforms;
 using Lua.Runtime;
 using Lua.Runtime;
 using Lua.Standard;
 using Lua.Standard;
-using System.Buffers;
-using System.Text;
 
 
 namespace Lua;
 namespace Lua;
 
 
-public sealed class LuaGlobalState
+sealed class LuaGlobalState
 {
 {
     // states
     // states
     readonly LuaState mainState;
     readonly LuaState mainState;

+ 1 - 1
src/Lua/LuaFunctionExecutionContext.cs

@@ -7,7 +7,7 @@ namespace Lua;
 [StructLayout(LayoutKind.Auto)]
 [StructLayout(LayoutKind.Auto)]
 public readonly record struct LuaFunctionExecutionContext
 public readonly record struct LuaFunctionExecutionContext
 {
 {
-    public LuaGlobalState GlobalState => State.GlobalState;
+    internal LuaGlobalState GlobalState => State.GlobalState;
     
     
     public LuaState State { get; init; }
     public LuaState State { get; init; }
 
 

+ 19 - 10
src/Lua/LuaState.cs

@@ -22,14 +22,9 @@ public class LuaState : IDisposable
         coroutine = new(this, function, isProtectedMode);
         coroutine = new(this, function, isProtectedMode);
     }
     }
 
 
-    public static LuaState Create(LuaGlobalState? globalState = null)
+    public static LuaState Create()
     {
     {
-        if (globalState is not null)
-        {
-            return new(globalState);
-        }
-
-        globalState = LuaGlobalState.Create();
+        var globalState = LuaGlobalState.Create();
         return globalState.MainThread;
         return globalState.MainThread;
     }
     }
 
 
@@ -38,7 +33,7 @@ public class LuaState : IDisposable
         return LuaGlobalState.Create(platform).MainThread;
         return LuaGlobalState.Create(platform).MainThread;
     }
     }
 
 
-    public static LuaState CreateCoroutine(LuaGlobalState globalState, LuaFunction function, bool isProtectedMode = false)
+    internal static LuaState CreateCoroutine(LuaGlobalState globalState, LuaFunction function, bool isProtectedMode = false)
     {
     {
         return new(globalState, function, isProtectedMode);
         return new(globalState, function, isProtectedMode);
     }
     }
@@ -153,7 +148,7 @@ public class LuaState : IDisposable
 
 
     FastListCore<UpValue> openUpValues;
     FastListCore<UpValue> openUpValues;
     internal int CallCount;
     internal int CallCount;
-    public LuaGlobalState GlobalState { get; }
+    internal LuaGlobalState GlobalState { get; }
     ThreadCoreData? CoreData;
     ThreadCoreData? CoreData;
     CoroutineCore? coroutine;
     CoroutineCore? coroutine;
     internal bool IsLineHookEnabled;
     internal bool IsLineHookEnabled;
@@ -182,6 +177,20 @@ public class LuaState : IDisposable
 
 
     public LuaTable Environment => GlobalState.Environment;
     public LuaTable Environment => GlobalState.Environment;
 
 
+    public LuaTable Registry => GlobalState.Registry;
+
+    public LuaTable LoadedModules => GlobalState.LoadedModules;
+
+    public LuaTable PreloadModules => GlobalState.PreloadModules;
+
+    public LuaState MainThread => GlobalState.MainThread;
+
+    public ILuaModuleLoader? ModuleLoader
+    {
+        get => GlobalState.ModuleLoader;
+        set => GlobalState.ModuleLoader = value;
+    }
+
     public LuaPlatform Platform
     public LuaPlatform Platform
     {
     {
         get => GlobalState.Platform;
         get => GlobalState.Platform;
@@ -356,7 +365,7 @@ public class LuaState : IDisposable
 
 
     public Traceback GetTraceback()
     public Traceback GetTraceback()
     {
     {
-        return new(GlobalState, GetCallStackFrames());
+        return new(this, GetCallStackFrames());
     }
     }
 
 
     public ValueTask<int> RunAsync(LuaFunction function, CancellationToken cancellationToken = default)
     public ValueTask<int> RunAsync(LuaFunction function, CancellationToken cancellationToken = default)

+ 4 - 2
src/Lua/Runtime/Tracebacks.cs

@@ -3,9 +3,11 @@ using Lua.Internal;
 
 
 namespace Lua.Runtime;
 namespace Lua.Runtime;
 
 
-public class Traceback(LuaGlobalState globalState, ReadOnlySpan<CallStackFrame> stackFrames)
+public class Traceback(LuaState state, ReadOnlySpan<CallStackFrame> stackFrames)
 {
 {
-    public LuaGlobalState GlobalState => globalState;
+    internal LuaGlobalState GlobalState => state.GlobalState;
+
+    public LuaState State => state;
 
 
     public LuaFunction RootFunc => StackFrames[0].Function;
     public LuaFunction RootFunc => StackFrames[0].Function;
 
 

+ 1 - 1
src/Lua/Standard/BasicLibrary.cs

@@ -567,7 +567,7 @@ public sealed class BasicLibrary
             LuaValueType.String => "string",
             LuaValueType.String => "string",
             LuaValueType.Number => "number",
             LuaValueType.Number => "number",
             LuaValueType.Function => "function",
             LuaValueType.Function => "function",
-            LuaValueType.Thread => "state",
+            LuaValueType.Thread => "thread",
             LuaValueType.LightUserData => "userdata",
             LuaValueType.LightUserData => "userdata",
             LuaValueType.UserData => "userdata",
             LuaValueType.UserData => "userdata",
             LuaValueType.Table => "table",
             LuaValueType.Table => "table",

+ 31 - 78
src/Lua/Standard/OpenLibsExtensions.cs

@@ -5,8 +5,9 @@ namespace Lua.Standard;
 
 
 public static class OpenLibsExtensions
 public static class OpenLibsExtensions
 {
 {
-    public static void OpenBasicLibrary(this LuaGlobalState globalState)
+    public static void OpenBasicLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         globalState.Environment["_G"] = globalState.Environment;
         globalState.Environment["_G"] = globalState.Environment;
         globalState.Environment["_VERSION"] = "Lua 5.2";
         globalState.Environment["_VERSION"] = "Lua 5.2";
         foreach (var func in BasicLibrary.Instance.Functions)
         foreach (var func in BasicLibrary.Instance.Functions)
@@ -15,8 +16,10 @@ public static class OpenLibsExtensions
         }
         }
     }
     }
 
 
-    public static void OpenBitwiseLibrary(this LuaGlobalState globalState)
+    public static void OpenBitwiseLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
+
         LuaTable bit32 = new(0, BitwiseLibrary.Instance.Functions.Length);
         LuaTable bit32 = new(0, BitwiseLibrary.Instance.Functions.Length);
         foreach (var func in BitwiseLibrary.Instance.Functions)
         foreach (var func in BitwiseLibrary.Instance.Functions)
         {
         {
@@ -27,8 +30,9 @@ public static class OpenLibsExtensions
         globalState.LoadedModules["bit32"] = bit32;
         globalState.LoadedModules["bit32"] = bit32;
     }
     }
 
 
-    public static void OpenCoroutineLibrary(this LuaGlobalState globalState)
+    public static void OpenCoroutineLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable coroutine = new(0, CoroutineLibrary.Instance.Functions.Length);
         LuaTable coroutine = new(0, CoroutineLibrary.Instance.Functions.Length);
         foreach (var func in CoroutineLibrary.Instance.Functions)
         foreach (var func in CoroutineLibrary.Instance.Functions)
         {
         {
@@ -38,8 +42,9 @@ public static class OpenLibsExtensions
         globalState.Environment["coroutine"] = coroutine;
         globalState.Environment["coroutine"] = coroutine;
     }
     }
 
 
-    public static void OpenIOLibrary(this LuaGlobalState globalState)
+    public static void OpenIOLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable io = new(0, IOLibrary.Instance.Functions.Length);
         LuaTable io = new(0, IOLibrary.Instance.Functions.Length);
         foreach (var func in IOLibrary.Instance.Functions)
         foreach (var func in IOLibrary.Instance.Functions)
         {
         {
@@ -61,8 +66,9 @@ public static class OpenLibsExtensions
         globalState.LoadedModules["io"] = io;
         globalState.LoadedModules["io"] = io;
     }
     }
 
 
-    public static void OpenMathLibrary(this LuaGlobalState globalState)
+    public static void OpenMathLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         globalState.Environment[MathematicsLibrary.RandomInstanceKey] = new(new MathematicsLibrary.RandomUserData(new()));
         globalState.Environment[MathematicsLibrary.RandomInstanceKey] = new(new MathematicsLibrary.RandomUserData(new()));
 
 
         LuaTable math = new(0, MathematicsLibrary.Instance.Functions.Length);
         LuaTable math = new(0, MathematicsLibrary.Instance.Functions.Length);
@@ -78,8 +84,9 @@ public static class OpenLibsExtensions
         globalState.LoadedModules["math"] = math;
         globalState.LoadedModules["math"] = math;
     }
     }
 
 
-    public static void OpenModuleLibrary(this LuaGlobalState globalState)
+    public static void OpenModuleLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable package = new(0, 8);
         LuaTable package = new(0, 8);
         package["loaded"] = globalState.LoadedModules;
         package["loaded"] = globalState.LoadedModules;
         package["preload"] = globalState.PreloadModules;
         package["preload"] = globalState.PreloadModules;
@@ -95,8 +102,9 @@ public static class OpenLibsExtensions
         globalState.Environment["require"] = moduleLibrary.RequireFunction;
         globalState.Environment["require"] = moduleLibrary.RequireFunction;
     }
     }
 
 
-    public static void OpenOperatingSystemLibrary(this LuaGlobalState globalState)
+    public static void OpenOperatingSystemLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable os = new(0, OperatingSystemLibrary.Instance.Functions.Length);
         LuaTable os = new(0, OperatingSystemLibrary.Instance.Functions.Length);
         foreach (var func in OperatingSystemLibrary.Instance.Functions)
         foreach (var func in OperatingSystemLibrary.Instance.Functions)
         {
         {
@@ -107,8 +115,9 @@ public static class OpenLibsExtensions
         globalState.LoadedModules["os"] = os;
         globalState.LoadedModules["os"] = os;
     }
     }
 
 
-    public static void OpenStringLibrary(this LuaGlobalState globalState)
+    public static void OpenStringLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable @string = new(0, StringLibrary.Instance.Functions.Length);
         LuaTable @string = new(0, StringLibrary.Instance.Functions.Length);
         foreach (var func in StringLibrary.Instance.Functions)
         foreach (var func in StringLibrary.Instance.Functions)
         {
         {
@@ -134,8 +143,9 @@ public static class OpenLibsExtensions
         });
         });
     }
     }
 
 
-    public static void OpenTableLibrary(this LuaGlobalState globalState)
+    public static void OpenTableLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable table = new(0, TableLibrary.Instance.Functions.Length);
         LuaTable table = new(0, TableLibrary.Instance.Functions.Length);
         foreach (var func in TableLibrary.Instance.Functions)
         foreach (var func in TableLibrary.Instance.Functions)
         {
         {
@@ -145,12 +155,11 @@ public static class OpenLibsExtensions
         globalState.Environment["table"] = table;
         globalState.Environment["table"] = table;
         globalState.LoadedModules["table"] = table;
         globalState.LoadedModules["table"] = table;
     }
     }
-    
-    
 
 
 
 
-    public static void OpenDebugLibrary(this LuaGlobalState globalState)
+    public static void OpenDebugLibrary(this LuaState state)
     {
     {
+        var globalState = state.GlobalState;
         LuaTable debug = new(0, DebugLibrary.Instance.Functions.Length);
         LuaTable debug = new(0, DebugLibrary.Instance.Functions.Length);
         foreach (var func in DebugLibrary.Instance.Functions)
         foreach (var func in DebugLibrary.Instance.Functions)
         {
         {
@@ -161,73 +170,17 @@ public static class OpenLibsExtensions
         globalState.LoadedModules["debug"] = debug;
         globalState.LoadedModules["debug"] = debug;
     }
     }
 
 
-    public static void OpenDebugLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenDebugLibrary();
-    }
-
-
-    public static void OpenStandardLibraries(this LuaGlobalState globalState)
-    {
-        globalState.OpenBasicLibrary();
-        globalState.OpenBitwiseLibrary();
-        globalState.OpenCoroutineLibrary();
-        globalState.OpenIOLibrary();
-        globalState.OpenMathLibrary();
-        globalState.OpenModuleLibrary();
-        globalState.OpenOperatingSystemLibrary();
-        globalState.OpenStringLibrary();
-        globalState.OpenTableLibrary();
-        globalState.OpenDebugLibrary();
-    }
-
     public static void OpenStandardLibraries(this LuaState state)
     public static void OpenStandardLibraries(this LuaState state)
     {
     {
-        state.GlobalState.OpenStandardLibraries();
-    }
-
-    public static void OpenBasicLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenBasicLibrary();
-    }
-
-    public static void OpenBitwiseLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenBitwiseLibrary();
-    }
-
-    public static void OpenCoroutineLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenCoroutineLibrary();
-    }
-
-    public static void OpenIOLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenIOLibrary();
-    }
-
-    public static void OpenMathLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenMathLibrary();
-    }
-
-    public static void OpenModuleLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenModuleLibrary();
-    }
-
-    public static void OpenOperatingSystemLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenOperatingSystemLibrary();
-    }
-
-    public static void OpenStringLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenStringLibrary();
-    }
-
-    public static void OpenTableLibrary(this LuaState state)
-    {
-        state.GlobalState.OpenTableLibrary();
+        state.OpenBasicLibrary();
+        state.OpenBitwiseLibrary();
+        state.OpenCoroutineLibrary();
+        state.OpenIOLibrary();
+        state.OpenMathLibrary();
+        state.OpenModuleLibrary();
+        state.OpenOperatingSystemLibrary();
+        state.OpenStringLibrary();
+        state.OpenTableLibrary();
+        state.OpenDebugLibrary();
     }
     }
 }
 }