Files
openwrt/package/utils
Felix Fietkau a4e922953c ucode: update to Git HEAD (2026-10-18)
f8c2d64f546c uloop: allow reusing the existing environment for a new process
1294001ec6cb uloop: fix array reference
dd91bd8396a5 tests: add test cases for use-after-free gc bugs
d96db3ea5ef2 json: fix use-after-free of read method across iterations
8a74d68a34ab lib: anchor working values in filter/map/callfunc across user code
2225a502e805 socket: anchor poll() result across user fileno() callbacks
6a061cf4ef34 zlib: fix use-after-free of read method across iterations
dbe92bca180b types: free uvcount=0 resources on retain=true sweep
b0574723d27d zlib: zero-fill the output reserve window
cc0698b723ed serial: add module skeleton, build wiring and fd helpers
114ffb8962e2 serial: add raw termios access and termios constants
3bdeeb0b1ef7 serial: add setspeed, setraw and setblocking helpers
2b22a1ac41b0 serial: add modem control line access (out-of-band signals)
bed2a12895ce serial: add break, drain, flush and queue inspection
697fe07b14db serial: add setserial-style serial_struct access (Linux)
504530a290ad serial: add termios round-trip test
d6544940e762 ubus: fix reply leak in deferred data callback
dfca6438bc55 fs: reimplement popen() with fork/exec and true shell-free array support
9a87ce92207a debug: rework memdump to invoke fileno() on resource values
bed321219636 types: expose exception_type_strings array
67b13e97a643 lib: allow die() to re-throw exception objects
f2d62f82a522 lib: deduplicate source files by resolved path in vm->sources cache
255f69081304 socket: add CAN socket support
6adff7054893 rtnl: add CAN link type support
b79e20e1eee5 rtnl: add vxcan link type support
5870b9995ff4 rtnl: zero reserved struct headers in nested attributes
abb80c69ed2d include: add `unused` macro
ff509e0698dc include: register resource type prototypes with VM
c404fe2d6556 types: add per-instance prototype support for extended resources
7fb34544e945 ci: install libffi on test runners
23d5561b04b2 ffi: add LibFFI-based foreign function interface module
f26fabfe3ecb ffi: Add .cast(), .copy(), .string() as ctype instance methods
19ffa8aa3218 vm: release resource type prototypes before the final GC
48e38fc6376f tests: move ffi ctype instance method tests to proper place
4d687afdc216 compiler, vm: implement tail call optimization
7074129727d9 vm: indicate tail call optimized frames in stack traces
c3dc162f0abc lib: reject circular prototype chains in proto()
fe9e2947d351 compiler: reject adjacent template literals
e9972df30d14 linux/types.h: add 128-bit integer types
76baa6fc264a types: fix instance-proto lookup offset in ucv_key_get()
fbdd169efd17 ubus: store per-call request proto in the instance proto slot
0aab97337e21 ubus: drop per-instance proto when releasing resources
4eff16514b57 uloop: report signal termination in process callbacks
9ba6ea147dee headers: split public and private API headers
4c6e64425d14 ffi: reject function values passed as variadic arguments
af69c8d226a9 types, vm, lib: add metamethod support for prototyped values
1fd07aa2ba34 ffi: represent wrapped C functions as "ffi.cfn" resources
c966006d635f ffi, vm: support property syntax for cdata via __get__ / __set__
672439e7c530 vm: add debugger infrastructure (breakpoints, offsets, nested-exit fix)
a5b5925b53ab debug: add interactive command line debugger with -x/-X CLI switches
c2476472eb23 debug: add remote debug protocol with a client/server split
d968d33f455e debug: move the debugger onto a line-based protocol, split server/client
1a771e3c1ffd debug: add line editing, EVAL, Ctrl-C interrupt and tail-call annotations
26bfd5851bcc debug: synthesize PAUSED when a resuming command cannot resume
00a8fa9dea6c ffi: add ffi.closure() for explicit C function pointer creation
f061ee2e4369 ffi: fix Clang static analyzer false positives in closure code
8c017f171f0a types: Fix warning unused variable
0273114f13a6 types: raise type error for non-index array property sets in strict mode
d2c7b24e366e struct: rename ucv_as_double to ucv_as_float64
4dd080fe47ab headers: privatize uc_program_entry/ucv_closure_new/ucv_compare, add uc_program_main()
fda0498102bd lib, vm: replace ad-hoc value casts with ucv_as_* macros
ad88dfb621d6 metamethods: object-valued __get__/__set__/__delete__ delegate instead of mis-delegating return values
ea4c65b3c255 lib/fs.c: set errno on failed open()
10e44a53f808 lib.c: add optional offset argument to index() and rindex()
37d10ce70189 lib/io.c: fix io.pipe() jsdoc example
100f354f5d75 lib/math.c: export math constants (PI, E, ...)
ca70f18e31b3 lib/resolv.c: validate retries/timeout and guard retry-interval division
22f64a32f784 treewide: adjust references after jow-/ucode => ucode-lang/ucode move
6373faeac549 docs: fix deep merge example
1561320a00b4 lib,main,types: include json-c compat shim where needed
83ed2a8ba815 tutorials: fix claims that disagree with the interpreter
cef095d846bd Update CNAME
0c39aaa3d277 lib/log.c: accept arrays of channel and option names
ad3a5d580983 lib/log.c: use the documented defaults for omitted arguments
9e1d747640fe devcontainer: add development container configuration
d2c81218773b vm: clear a pending exception when entering uc_vm_execute
deb063dba30d build: add minimal emscripten/wasm32 build guards
75489e3ca2d5 source: initialize runpath in uc_source_new_buffer
4e65efb46854 build: add emscripten/wasm32 CMake support
24b0a2ad2e05 lib: underline the statement an error occurred in
926a2bf7e219 lib: name the offending expression when a call fails
068e7b222b4f ucode: fix socket bind() ignoring port argument
a4da50de2430 io: read the current termios before applying attributes
38f21be1bcbb uloop: redirect the task child's standard descriptors to /dev/null
af8a3830661a uloop: close the task output pipe even without an input callback
e6e03000000f uloop: release the handle when uloop_fd_add() fails
1e6b56558617 uloop: read task messages without losing them to EAGAIN
6e1592a2862f fs: report a write that only fails when the file is closed
d075095287c8 fs: keep the bytes a short read already delivered
8c01857cadd0 resolv: file each NS, CNAME and PTR record under its own type
4fec71ddd26d struct: decode any non-zero byte as true in native mode
edf5b32c5d4c zlib: inflate every member of a concatenated stream
b844c63b2381 resolv: release the TXT buffer when the record is malformed
664b70791957 compiler: unwind the nested function compiler on a bad argument list
ab988ea3159a struct: accumulate signed integers in an unsigned type
d996fade5f36 compiler: do not overflow int building the wildcard import operand
24df8d20bde2 vm: give division by zero the right sign, and NaN for zero over zero
a5c102ea2cfd tests: expect statement underline in forward declaration error
ccbe4228913d types: clear resource value slots after releasing them
c7e550d05ec4 socket: reject recv() lengths that overflow the printbuf offset
b1c7693fc5c6 socket: do not free caller-owned control data in sendmsg()
0630355f1ce6 socket: size msg_controllen from the payload, not the cmsg length
b51836754a9e types: do not dereference tagged values in ucv_string_length()
8fac388410d4 struct: bound the base64 pack field to the space reserved for it
b8a8646cbb2c struct: bounds-check the field offset when unpacking
5544af285082 struct: allocate the string header when packing zero bytes
8bd004a1a423 lib: free the string match() allocated, not the one it advanced
e98574152fcb io: return ENOMEM rather than aborting on an oversized read
9b45eef92402 io: give ioctl() a heap buffer the kernel cannot overrun
531c09289a4f resolv: check the SOA rdata bound after the two names
4d12bc9af856 ubus: detect cycles when converting values to blobmsg
5bcb94aec84d vallist: reject an inline string constant longer than its buffer
cd73805bcb0f program: validate the export name length when loading bytecode
fe546444f289 program: terminate the strings the bytecode loader reads
ba4b639597e6 compiler: do not return a bytecode program that was just freed
19247f51e22a compiler: unwind the patchlist when an expression fails to parse
58774dd67277 rtnl, nl80211: check every netlink reserve return
8fff82c22a7c fs: stop readfile() losing data when the buffer cannot grow
39454f8830a9 zlib: act on the output reserve failing
a90a1d2c9ebe lib: size the b64dec output buffer from the ceiling
ad3be9a33322 ubus: bound the nesting depth when decoding a message
953cd5a9ea23 ubus: do not close a descriptor the script still owns
5a2c5d93ce53 lexer: discard the partial string when an escape is rejected
428232cfce1c vm: range-check local slots, upvalue indices and stack depth
e170905c143b program: bound the counts and lengths the bytecode loader reads
6065b2ce63cc program: bound an export name by the bytes left in the file
e1a8b8cf5d21 compiler: do not call a missing infix handler inside parentheses
2cd8d1b9726b compiler: do not read the last instruction of an empty chunk
468994d345ff compiler: compare local names without assuming they are strings
04d59c6395de compiler: guard the remaining local name comparisons
19656543aac0 types: dispatch __delete__ for keys arrays and resources cannot store
dd57d12404ec compiler: do not drop the loop condition at chunk offset 0
dc9386a190fb jsdoc: accept a doc comment at the very start of a file
04d3ae59abd4 serial: add JSDoc documentation for module functions and constants
959206e27878 netaddr: add new netaddr module ported from LuCI's luci-lib-ip
904358422b3b docs: restructure tutorials around the new manual
af9324c9e7c5 readme: point at the new project sites
212dd12150b6 lib: optimize trim(), ltrim(), rtrim()
2c8c36be454d struct: fix infinite loop in grow_buffer() for small sizes
131c041a61d5 platform: export the macOS pipe2() replacement to modules
e6a1f945db65 fs: find the PATH separator without strchrnul()
4711d3c2c5dc lib: reject mutations of the container being sorted
f0a4664b97b0 rtnl: recover the event listener from receive buffer overruns
eaa09ca64305 rtnl: free the partial reply of a request that fails
5c655c357c53 rtnl: return true for an acknowledgement without data
0bfb7b97bf2f nl80211: recover the event listener from receive buffer overruns
30dfbb218fa1 nl80211: return true for an acknowledgement without data
395cfeead63f nl80211: fail a request whose reply the event socket lost
f8f8fc55126f nl80211: run listener callbacks outside of a request
f60d9b01b59c nl80211: free the partial reply of a request that fails
234e524f7ae0 nl80211.h: update to mainline d24e8ac715de
80be3ab390ee nl80211: request and decode the per-link statistics of a station
c51e15921dc6 lib: fix module namespace export mapping for linked imports
b5ce44358354 compiler: report strict redeclarations at the redeclaring name
e22e4362e6d5 tests: allow restricting a testcase to platforms
ef5b35ea145e tests: do not check forked children with valgrind
a6b8bfe1b582 tests: allow a testcase to skip itself
7fe06b46f3c5 uloop: expose ULOOP_ERROR_CB
115d308a8514 uloop: release timers and handles once they are finished
0c1b005cd0d3 uloop: disarm a timer on set() without a timeout
986390458007 uloop: disarm an interval on set() without a value
503a9bfcffd2 uloop: test that a finished task closes its pipes
f4fa308dc4f2 uloop: keep a task alive while its output callback runs
fa81c11ff2a7 uloop: release a finished task after a callback exception
21a2140f2324 uloop: reject a handle without an IO event
0ea69b1e736a uloop: do not unregister a reused descriptor number on handle delete
ddb06a197ef5 compiler: make strict mode function names constant bindings
620eff6a772d uloop: keep a handle alive while epoll may still report it
1942e5fce058 uloop: disable a handle whose removal fails
9a3acc008531 uloop: expose ULOOP_PRIORITY
1f54bd285339 uloop: read task messages without blocking the event loop
c2319e9b26bb uloop: close the task pipes when fork() fails
db2191ab014e devcontainer: remove formatting options managed by editorconfig
486104700227 compiler: account for nested imports in the importer's export offset
be870dd61b95 types: give the collector a dedicated mark bit
2e0b25a23c09 socket: fall back to SO_TIMESTAMPNS for the OLD alias
4141cb38f398 ubus: pass an exception of a deferred completion callback to the guard
0fcd31713fee ubus: do not pass exit() in a callback to the guard
c80855059801 socket: fix the file descriptor on 64-bit big-endian
a18924e53045 tests: move the socket poll test to the lib_socket directory
f4ce7eb00d22 source: allocate and release a source in one place
8d25f029d96b compiler: give dynamic loads the position of the import
08f3be072dd0 vm: read the callee type before uc_vm_call() runs it
3c9f214a2d56 serial: add RS485 mode access (Linux)
100d19ac369f vm: keep the exception of a module that failed to load
3c0a3c7c1023 vm: read the importing frame after the module load
2cf103aded34 tests: skip the RS485 serial test under valgrind
5c8d6d544730 lib: fix stack use after scope in compile config parsing
0dc042eefa5b source: rework the text access API
1dd1f88c81bb source: close the file of a source after its compilation
69db946e7c39 lib: remove the source cache of loadfile()
4436a931dc38 compiler: start each compilation from a clean source
4503599e49f1 source: read a file that cannot seek into a buffer
330cdab782be compiler: release the name list of an import() statement
153c627fd445 lib: do not store a failed module in the module table
3bf604919140 vm: keep the exception of a failed dynamic module load
71b4a144b438 lib: compile a file loaded from a module body as a program
080cbd79727f lib: release the main function of a required file
6c30ef7fd30c vm: release the previous binding of an import
6e404de5c0b1 vm: let the main closure of a program own its module exports
0adb7ba6b4d1 vm: do not interrupt the exports of a module
8cfcffe5abcd lib: find the exports of a precompiled module by their count
53ebdff102e6 vm: size object literals from the compiler's key count
f8a757295dc9 types: start array entry vectors at 2 slots
00091f829801 types: avoid accessing values after converter exit
78f83f8d6b59 lib: take one reference on the prototype in proto()
96cdb4549b59 compiler: fix endless loop on syntax errors in template placeholders
fb54dfe1733c types: release the old instance prototype of a resource

struct uc_vm grows at its end, and programs such as hostapd embed it, so
bump PKG_ABI_VERSION.

Add packages for the new ffi, netaddr and serial modules. Turn them off
for the host build, since ffi is otherwise built whenever libffi happens
to be in the staging directory.

The project moved to ucode-lang/ucode, so update PKG_SOURCE_URL.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2026-10-19 12:22:07 +02:00
..
2026-04-27 10:50:53 +02:00
…
2026-06-27 16:24:14 +02:00
…
2026-07-05 23:41:36 +02:00
2026-02-17 22:25:09 +01:00
2026-04-27 10:50:54 +02:00
…
2026-06-24 02:14:33 +02:00