sync.singleflightto suppress duplicate concurrent work.perf.hrtimefor high-resolution timing.net.addrmodule extracted, centralized host:port handling.- Snappy and LZ4 codecs in
compress.
- Logger redesigned with a ring buffer and async flushing.
- JSON encoding module rewritten in C for performance and RFC 8259 compliance.
- DNS resolver reimplemented with a C-based wire format parser.
- Cluster packet header expanded to 4 bytes and packet size limits enforced (may affect protocol compatibility).
- Hive workers now inherit package path and restrict module access.
- Profiler renamed to
perf. - Timer refactored to use unified command buffer instead of separate after/cancel buffers.
- Timer shutdown sequence refactored with explicit thread termination via OP_EXIT commands.
- TLS: propagate handshake/write errors to callers; fix UAF in server ALPN handling.
- Signal: fix async-signal-unsafe handler and cross-thread
lua_sethookrace. - HTTP/2: validate
:statusin responses; skip content-length validation for no-body responses; maskWINDOW_UPDATEreserved bit; remove duplicate SETTINGS ACK during handshake. - Worker: fix
lua_closeorder to prevent use-after-free. - Timer: refine locking in flipbuf and timer pool.
- New peer-based cluster implementation (
cluster.lua) as an alternative to legacy cluster APIs. - Interactive Lua REPL when running without a script or from stdin.
- MySQL
caching_sha2_passwordauthentication support and connection pooling. - Etcd v3 client (kv, lease, watch).
- Unified timeout support for
tcp.connect,tls.connect, andnet.connect. - Public C API layer (
api.c) for embedding and integration. silly.hivethread pool for offloading blocking operations.- Zlib compression support.
- Dockerfile for containerized builds and deployment.
- Lua runtime upgraded to 5.5.0.
- Modules reorganized into namespaces (
silly.net,silly.store,silly.security,silly.internal). - TCP, UDP, and TLS networking APIs refactored to object-oriented, coroutine-friendly interfaces.
- UDP receive model changed from callbacks to pull-based APIs (e.g.
udp:recvfrom()). - HTTP/1.x and HTTP/2 APIs redesigned for protocol correctness.
tcp.read/tls.readnow returnnil, erron error and"" , erron EOF.- Legacy
cluster.rpcandcluster.msgAPIs removed. - Internal entry point
silly.start()made private assilly._start.
- HTTP/2 implementation reworked with proper flow control and stream lifecycle handling.
- gRPC behavior improved for large requests via correct HTTP/2 frame fragmentation handling.
- Socket subsystem refactored with new pooling, ID handling, and error semantics.
- Socket read path redesigned to use a bounded temporary buffer instead of prediction-based growth.
- UDP implementation rewritten to align with coroutine-based networking model.
- WebSocket implementation refined for RFC 6455 compliance.
- TLS enhanced to support loading certificates from PEM content and dynamic reload.
- Redis client API updated (
redis.newreplacingredis:connect,redis.calladded). - Internal error handling standardized to use string-based error descriptions instead of numeric errno.
- Tracing improved with more robust trace ID generation.
- Logging improved (fixed format specifiers, better consistency, deterministic table truncation using
{...}, and fallback of unsupported value types to string). - Atomic operations migrated from GCC built-ins to C11 atomics.
- Platform-specific code isolated into
unix/andwin/directories. - Internal source layout and naming normalized (drop
silly_prefix, renamesilly-src→src,lualib-src→luaclib-src). - Crypto reimplemented on top of OpenSSL.
- HTTP/2 trailer headers arriving before response body.
- Race conditions in
sync.channel. - Timer session race conditions.
- Socket-related race conditions and stability issues.
- Fix websocket frame header byte order
- Fix http2 scheme header and reset_frame error code
- Fix http2 window handling
- Fix various lint warnings
- Add gRPC support
- Add signal support
- Add cancel support for timer and redesign node cache
- Add Prometheus metrics
- Add distributed tracing via log (experimental)
- Add cluster.lua as a flexible alternative to cluster.rpc and cluster.msg
- Add LuaLS/lua-language-server annotations for type checking and navigation
- Support TLS SNI certificates
- Support automatic HTTP/HTTP2 protocol switching
- Support ETCDv3 client (kv, lease, watch) partially
- Handle websocket connection close gracefully
- Remove trailing '\r\n' from Redis responses
- Refine endless loop warnings and include tracebacks
- Unify code style using clang-format
- Reimplement startup mechanism and module layout
- Reimplement logger with log levels (debug, info, warn, error) and improved performance
- Fix incorrect session type in netpacket.rpcpack
- Fix incorrect lua_gc invocation
- Handle socket close events in send_msg_tcp/send_msg_udp
- Add cluster module for cluster networking
- Allow startup parameters to override environment variables
- Add examples for timer, socket, rpc, http, and websocket
- Optimize core.timeout for large timer workloads
- Extend crypto module with URL-safe base64, sha256, digestsign, and digestverify
- Support TLS SNI and ALPN
- Support HTTP/2
- Refine patch mechanism for flexibility
- Add extended monitor data (timer events, memory usage)
- Fix timer session race condition
- Fix tls.read returning corrupted data
- Fix DNS name cache
- Fix sys.socketq authentication race condition
- Fix DNS session overflow
- Fix netpacket hash collision handling
- Ensure no code executes after core.exit()
- Fix saux.rpc handling of multiple messages per loop
- Fix saux.rpc timer leak
- Support IPv6 DNS server addresses
- Add DOM parser for HTTP
- Add wakegroup for waiting on coroutine groups
- Add fd round-back check for sys.socket
- Add monitor thread for slow event detection
- Abstract task (coroutine wrapper for socket and timer events)
- Extend console with task and network debug info
- Support numeric index keys in core.env
- Add flow control
- Upgrade to Lua 5.4 and enable generational GC by default
- Expand netpacket queue
- Fix netstream.check and netstream GC
- Fix profiler timestamp handling
- Fix AES-CBC mode
- Reset Redis dbindex on reconnect
- Add SSL support for http.client
- Add base64 support
- Add hotpatch support for Lua code
- Add pidfile support
- Use jemalloc as default memory allocator
- Import accept4 on Linux
- Support configurable CPU affinity on Linux
- Add include directive to config files
- Replace old RPC with saux.rpc and saux.msg
- Add socket tag for debugging
- Support shell environment expansion in config files
- Support multicast data sending
- Synchronize zproto to support float
- Support nested CNAME resolution in DNS
- Allow socket.write to accept string arrays
- Add Redis pipeline support
- Extend core.write to support lightuserdata and string arrays
- Handle file descriptor exhaustion during accept
- Remove lualib-log and refine daemon logger
- Fix HTTP protocol handling
- Fix socket trysend behavior
- Add new profiler
- Increase default max packet size to 65535
- Increase default listen backlog to 256
- Fix daemon log buffer mode
- Fix zproto map key synchronization bug
- Fix netpacket memory leak
- Fix UDP message memory leak
- Update to Lua 5.3.3
- Track Lua VM memory usage
- Allow custom daemon log paths
- Add silly.channel synchronization primitive
- Add core.wait2 and core.wakeup2 interfaces
Initial release.
- Basic socket I/O
- Core libraries