Thomas Watson
b64ed6ca56
AP_Scripting: dynamically load some binding objects
...
Only create the binding object (singleton metatable/userdata or C
function reference) once the user first references a particular
singleton or userdata creation function. Once created, the object is
stored into the script's environment so it doesn't get recreated on the
next reference and there isn't any further overhead. The userdatas are
no longer shared between scripts which imposes a slight memory penalty
for multiple scripts using the same singleton but this avoids an
additional lookup time cost.
Userdata and ap_objects aren't eligible for this optimization as the C++
code might want a particular metatable at any time.
Saves ~9.3K Lua heap.
2024-07-23 10:34:52 +10:00
Thomas Watson
059af2117d
AP_Scripting: place bindings into global table
...
The global table is then used as the __index metamethod of each state's
environment table. Avoids the overhead of loading binding objects into
each state. The binding objects are immutable from Lua so sandboxing is
not violated.
Does have the slight downside that a script can no longer know all the
binding names by enumerating _ENV.
Saves ~700B of memory per loaded script.
2024-07-23 10:34:52 +10:00
Thomas Watson
9cbec043d0
AP_Scripting: remove __call metamethod from singleton metatables
...
The __call metamethod was set to the metatable itself. With __call not
present, Lua will try to call the metatable (and fail), which is the
same behavior as with the __call metamethod set to the metatable.
Saves ~2K Lua heap.
2024-07-23 10:34:52 +10:00
Thomas Watson
8e303675fe
AP_Scripting: don't put userdata and ap_objects into globals
...
They are never accessed from globals. Only their metatables are
accessed, using luaL_getmetatable.
Saves ~2.9K of Lua heap.
2024-07-23 10:34:52 +10:00
Thomas Watson
50eac0ef31
AP_Scripting: keep enum definitions in flash
...
Saves ~100B of statically allocated RAM.
2024-07-23 10:34:52 +10:00
Thomas Watson
4df2a1bce7
AP_Scripting/generator: generate depends for manual functions on singletons
2024-06-27 12:00:18 +10:00
Thomas Watson
c37dba60de
AP_Scripting/generator: allow disabling userdata creation from Lua
...
Passing -1 to the argument count for the `creation` tag (name does not
matter) will stop the generator from giving Lua a function to construct
that userdata. The C `new_<name>` function still works.
2024-06-27 12:00:18 +10:00
Iampete1
574b9939a5
AP_Scripting: allow auto generation of uint32 operators
2024-06-18 10:37:13 +10:00
Iampete1
003ccc38c6
AP_Scripting: generator allow more types for uint32 prams and dont add class keyword to globals
2024-05-21 09:42:22 +10:00
Iampete1
a4a8923e1e
AP_Scripting: generator: add return count to manual bindings
2024-05-07 09:51:53 +10:00
Iampete1
6e75f7c80f
AP_Scripting: update docs generator to show ap_objects as possibly nil
2024-05-07 09:51:53 +10:00
Peter Barker
d1de760ee4
AP_Scripting: enable AP_Scheduler for CubeOrange-periph-heavy
...
... we use the scehduler in AP_Motors, which is compiled when making heavy-periph
2024-05-01 17:53:44 +10:00
Iampete1
5907e49cb1
AP_Scripting: ensure that all pass by refence values are initialized
2024-02-20 11:05:36 +11:00
Peter Barker
2263dced74
AP_Scripting use scheduler semaphore only if AP_SCHEDULER_ENABLED
2024-02-15 12:17:07 +11:00
Peter Barker
3f34eb12b0
AP_Scripting: include extern-hal line to fix compilation
...
this external line was coming in from a header file somewhere...
2024-02-13 20:57:12 +11:00
Iampete1
105801c5b0
AP_Scripting: add support for dependencty on manual methods, remove handling of mission commands without AP_Mission
2023-10-17 10:23:20 +11:00
Iampete1
6a8e07e7ae
AP_Scripting: Generator: allow unused enum loader function
2023-10-17 10:23:20 +11:00
Iampete1
cf2ba23089
AP_Scripting: generator: emit dependancys for operators
2023-10-17 10:23:20 +11:00
Iampete1
6ae2fc2ca0
AP_Scripting: support per method dependencies
2023-09-26 11:29:42 +10:00
Iampete1
d2e3bd700c
AP_Scripting: add argcheck warning to defualt userdata creation functions
2023-08-29 10:16:36 +10:00
Iampete1
63666ea83a
AP_Scripting: generator: fix dependancy start and end miss-match
2023-08-07 12:33:01 +10:00
Peter Barker
d519ab604e
AP_Scripting: allow AP_SCRIPTING_ENABLED to come from hwdef files
2023-06-09 16:10:52 +10:00
Iampete1
990db62235
AP_Scripting: generator: don't expose creation functions to all read only userdata
2023-05-08 19:43:24 +10:00
Iampete1
8fa2472148
AP_Scripting: userdata: allow read of enums and userdata
2023-05-08 19:43:24 +10:00
Iampete1
f7a14a58fd
AP_Scripting: luacheck: check globals
2023-02-22 19:36:02 +11:00
Iampete1
11f6b5c3ea
AP_Scripting: docs: ignore luacheck warnings
2023-02-15 19:38:46 +11:00
Iampete1
c1cd095508
AP_Scripting: remove lua acess to ap object creation
2022-11-23 19:48:21 +11:00
Iampete1
6086402528
AP_Scripting: use helpers for full range return types to save flash
2022-11-15 10:33:51 +11:00
Iampete1
7b844e3974
AP_Scripting: use checker helper for singletons
2022-11-01 17:03:50 +11:00
Iampete1
d673d3b219
AP_Scripting: rework feilds to only use switch for both read and write
2022-11-01 17:03:50 +11:00
Iampete1
5a0c45e090
AP_Scripting: ap object creation functions shared method
2022-11-01 17:03:50 +11:00
Iampete1
84fe2ed829
AP_Scripting: remove memset 0 after malloc
2022-11-01 17:03:50 +11:00
Iampete1
d0f527369d
AP_Scripting: remove type specific out of range warnings
2022-11-01 17:03:50 +11:00
Iampete1
06712c9f0b
AP_Scripting: rework arg checks to save flash
2022-11-01 17:03:50 +11:00
Iampete1
5711ac9596
AP_Scripting: generator: combine null checks in getter as error is terminal
2022-11-01 17:03:50 +11:00
Iampete1
48ce8c4e16
AP_Scripting: binding gen: add number of argument to manual functions and generate docs for manual
2022-10-19 18:35:32 +11:00
Iampete1
b49ded9f8e
AP_Scripting: fix userdata skip check
2022-09-26 08:05:54 +10:00
Iampete1
b4234256f8
AP_Scripting: allow maunal apobject bindings
2022-09-15 12:40:04 +10:00
Iampete1
e51c42f8a5
AP_Scripting: enfoce skip check on correct types update description to match
2022-09-13 18:43:13 +01:00
Iampete1
2c8a11885f
AP_Scripting: Boxed numerics and maunal bindings use generated arg checker
2022-08-17 17:18:26 +10:00
Iampete1
ea4f050aa8
AP_Scripting: Generator: fix docs generator aliasing
2022-07-05 10:31:51 +10:00
Iampete1
7850aea186
AP_Scripting: load uint32_t bindings via generator
2022-05-10 09:42:57 +10:00
Iampete1
5bfb295fdd
AP_Scripting: generator: support manual and manual operators on userdata
2022-05-10 09:42:57 +10:00
Iampete1
934b56e597
AP_Scripting: generator: support manual creation functions for userdata
2022-05-10 09:42:57 +10:00
Iampete1
3319140133
AP_Scripting: generator: remove unused function
2022-05-10 09:42:57 +10:00
Iampete1
03476711f2
AP_Scripting: binding gen: support globals
2022-05-04 17:49:14 +10:00
Iampete1
59fb78fea8
AP_Scripting: binding gen: support manaul bindings
2022-05-04 17:49:14 +10:00
Iampete1
5c2b0ebb0f
AP_Scripting: binding gen: don't emit dependancy if there are no fields
2022-05-04 17:49:14 +10:00
Iampete1
20a2e6aaf0
AP_Scripting: allow deprecation warnings
2022-05-03 07:48:39 +10:00
Iampete1
6e3cb7efdc
AP_Scripting: support true aliases
2022-04-26 10:28:28 +10:00