## Global Fields
- `over_exec_limit(f)` -> `(_exec.time / _exec.limit) > f`
- `dm.state_id` -> `_state_id`
- `dm.global_proc(proc, ...args)` -> `dm.global_procs.proc(...args)`
- `__next_yield_index` -> `_exec.next_yield_index`
## Datums
for a datum `D`:
- `D:get_var(var)` -> `D.var` or `D[var]`
- `D:set_var(var, value)` -> `D.var = value` or `D[var] = value`
- `D:call_proc(proc, ...args)` -> `D:proc(...args)`
- `D:is_null()` -> `not dm.is_valid_ref(D)`
- `D.vars` still exists, but directly refers to the `vars` var of a datum instead of a table that proxies reads and writes to the datum.
## Lists
for a list `L`:
- `L:get(key)` -> `L[key]`
- `L:set(key, value)` -> `L[key] = value`
- `L:len()` -> `#L`
- `L:add(value)` -> `list.add(L, value)`
- `L:remove(value)` -> `list.remove(L, value)`
- `L:is_null()` -> `not dm.is_valid_ref(L)`
- `L:to_table()` -> `list.to_table(L)`
- `L:of_type(type)` -> `list.filter(L, type)`
- `L.entries` is removed. Use the `__index` and `__newindex` metamethods instead.
## SS13
- `SS13.register_signal` returns `true` instead of a `/datum/callback` on success.
- `SS13.unregister_signal`'s 3rd argument now takes a `function` instead of a `/datum/callback` For proper signal unregistering, code written like the first excerpt should be rewritten like the second except.
- ```lua
local cb = SS13.register_signal(D, sig, function() ... end)
...
SS13.unregister_signal(D, sig, cb)
```
- ```lua
local function func() ... end
SS13.register_signal(D, sig, func)
...
SS13.unregister_signal(D, sig, func)
```
- `SS13.stop_tracking` no longer exists, as dreamluau maintains hard references that are cleared either automatically on lua garbage collection, or manually when the datum is qdeleted.