Releases: allegory-software/allegory-sdk
Releases · allegory-software/allegory-sdk
0.6
- file_is(): don't crash if file missing
- unix sockets support
- binaries update
- updated minizip to 4.0.5
- xapp: www_dirs config
- winapi/registry fixes
- xrowsets: send fields on reply to save
- resolve_types({translate = true})
- fixed webb_spa.js to not depend on glue (not finished)
- webb_spa.lua: no longer responding with html on 404; must now declare all client-side actions on the server
- wwwdir() -> wwwdirs()
- canvas-ui integration
- removed x-widgets
- starting the big UI refactoring of replacing the DOM-based widgets with canvas-ui
- setbits() setbit() changed param order
- winapi fixes
- chan(): golang-like unbuffered channels (untested); suspend(...) => suspend(); resume(...) -> ... => resume(...)
- glue: exposed add_searchpath()
- xrowset: field text->label
- minizip2 -> zip rename in README; headers upgraded to 3.0.4
- logging: more compact
- fs: make pipes quiet
- removed ffipath(); added sopath(); updated RUNTIME.md
- json.lua: repl_nulls()
- schema_std:
count
no longer not_null; bigcount type; both of type = 'count' - logging.lua: counts fix; rpc:reset_counts()
- fix json decoding of nulls in post() and in xrowset
- remove cycle in weak table which causes leak
- sock: coro_counts() returns two counts lists: total and live
- logging: rpc: get_env; log_livelist->get_livelist
- sock: trace_coro() & coro_counts()
- schema_std: longtext type
- loging: rpc:eval() logs eval result with logvar
- istype -> isctype
- logging.lua: add LuaJIT counters
- glue.lua: removed dependency on openresty luajit
- luajit 2.1 rebased + COUNTS + ALLEGORY_BUILD
- luajit build script: build with memprof
- consistency renames: typeof -> ctype; typeof = type; istype -> isctype
- http_server: return 404 if req:respond() not called in request handler
- webb_spa: spa_action(opt)
- webb: mustache_wrap(): escape </script>
- webb_action: only serve static files with GET
- webb_auth: setcountry() called on login
- logging: rpc: jit_onoff(); rpc: eval()
- http: self.compress; http_server: config'http_compress'
- tasks: filter fix
- proc: daemonized global
- logging: resend last var states on (re)connect
- logging: start/stop profiler and send profiler output to remote logging channel
- proc_win: small error handling fix
- fs: pidfd_open() (not used yet)
- epoll_fd() doesn't leak to subprocesses anymore
- sock: log fd
- fs_posix: pipes and files are not inheritable by default (but subject to inheritable option)
- sock: sockets are not inheritable anymore in Linux
- proc: inherit_handles defaults to true (and can't be false on Linux)
- glue: setbits()
- fs: vfile fix
- logging.flush -> logging.autoflush
- daemon: use daemonize() from proc module
- proc: daemonize()
- logging:tofile_flush()
- fs: mkdir(): parse perms arg
- client_config'multilang'
- config'favicon_ref' can be a function
- resize_image() fix
- jpeg_save() fix
- daemon: add run command on windows
- sqlpp: autoinc pk add/remove fix
- logging is now fully queued and async so both fs and sock modules can use the global log() function without worrying about infinite loops
- sock: resume() and transfer() disallowed on threads stuck in wait()
- webb_spa: try_login() instead of login() on spa_action()
- tasks: no longer add stdin to error notification on task error
- call epoll_ctl(EPOLL_CTL_DEL) on socket close anyway
- fs/posix: chmod() fix
- tasks: break pipe cleanly
- sock: no longer log wait-jobs by default
- lang: timeago() fix
- glue: time() fix
- log() can't resume logging sending thread directly because then coro cannot use live() anymore
- sock: listen() returns self
- coro: checking validity of finish() thread
- webb_auth: .roles always available; login() breaks; try_login()
- tasks: made OOP
- http: refusing non-self-terminating requests by default
- libtls: renamed all I/O methods to try_* ...
- sock: added more getopt() & setopt() options for Linux
- fs: fixed default file & dir creation perms
- sock_libtls: fix socket emulation
- daemon: redirect stdin/out/err to /dev/null
- daemon: fix restart
- http: recv_buffer_size taken from socket
- sock: start([ignore_interrupts]); prevent epoll_wait() from breaking on EINTR so we can strace attach freely without breaking the app
- http_server: free http buffer after conn. closes
- http:free()
- fs: vfile: close() frees the internal string_buffer
- proc: wait(expires, [poll_interval])
- sock: logging wait_job() creation
- tasks: poll_interval option for monitoring processes (default 1s)
- connpool: improved debugging + close() fix
- xrowset: resume suspended xrowset.events thread when socket is closed
- close_all_dbs(); logging.rpc:close_all_sockets()
- sock: sock.sockets table for tracking live accepted sockets (and closing them automatically when the listening socket is closed)
- http_server: close_all_sockets()
- logging: procinfo.lua_heap
- glue: sort() returns t; remove_value(t, v)
- logging: log to file - suppress echo
- proc: try_exec_lua() fix
- logging: file logging uses special log functions to avoid echoing
- fs: opt arg extends the file object
- winapi: registry API
- tasks: auto-restart on failure
- mess: now accepts a pre-made socket arg
- logging: fixed infinite echo when the logging sockets calls log()
- made sock complicated in order to have log() and live() be replaceable
- mysql start transaction & commit are quiet; rollback is still logging a 'note'
- fs: pipes log quietly
- coro: fix transfer(dead coroutine)
- pbuffer:pos() -> :filepos(); pbuffer.minsize -> pbuffer.readahead
- pbuffer: read() fix
- pbuffer: pos()
- mysql: unlike mysql behavior, crash if start_transaction() is called within a transaction
- sock: remote_addr & remote_port on linux
- logging: filter only applies to debug messages
- ffipath fix
- url_parse() relative option
- xrowset: atomic not needed anymore; rowset_changed fired based on update not having errors instead of affected_rows; implicit col_map based on rw_cols for better security
- sqlpp: forward start_transaction(), end_transaction(), commit(), rollback()
- query.lua: auto-start transaction on first db() call on a thread, auto-commit/rollback at the end of the current thread and at the end of the current http request
- moved http_request() from webb.lua to http_server.lua
- mysql: start_transaction(), end_transaction(), commit(), rollback(), in_transaction()
- libtls: avoid logging entire files in debug mode
- schema_std: text -> en_text
- schema: text and info attrs are now always dynamic and multi-language
- S() returns nil if a default not provided
- use call()
- glue: call()
- rowset.lang: must be admin
- webb_spa.js: current_url fix
- webb_auth: find tenant based on host() when creating anonymous users
- sock: wait() bug fix
- webb_spa: href() injects ?usr= from current url
- xauth: tenants grid & changing tenant if dev
- webb_auth: user impersonation: realusr() vs usr()
- auth: tenant table & usr column
- webb: moved intl to lang module that works outside webb context
- lang: multi-language/country/currency + date/time formatting in a separate intl module
- smtp: use needline(); dynamic default port based on tls opt
- http: use needline(); http_redirect() moved here from webb
- pp: pp_save() fix
- pbuffer: needline(); haveline()
- glue: try_eval(); [try_]eval_file(); moved date/time formatting to own intl module
- fs: scandir(list of paths); + fixes
- xrowset_sql: rs:get_params(param_vals) callback
- xapp: before and after methods
- webb: outfile(path, [offset], [len]) offset and len args
- sqlpp: fixed insert_or_update() with mysql not getting back auto-increment val on update; atomic(f, onerror, ...) added onerror arg; spp.use() now can pass schema
- query: ability to set schema on use()
- sock: tcp.remote_addr and tcp.remote_port is set after connect()
- path: indir() refuses nil args
- varpath(vararg...); mv() calls mkdirs() first; mkdirs() is recursive now
- listen() onaccept optional callback arg
- got rid of logprintargs()
- glue: hexblock(); sock:debug() now prints hexblocks (binary autodetected)
- fs: file:buffer(filetype); f.seek is nil on pipes; always invalidate fd/handle on close()
- sock: socket:buffer(protocol); global listen()
- glue: string_buffer(); protocol_buffer(); protocol_errors()
- fs: file_buffer(); sock: protocol_buffer()
- sock: failure to create a socket is a user error (a bug)
- glue: bswap, bswap16, string_buffer()
- http client, http server, smtp client tests with TLS
0.4
Changes
- removed charls, openjpeg, dicom
- dicom: df.encoding
- x-grid: smaller default cell height
- $fs: f.type attr
- dicom bugfix
- webb_action: internal_action() that doesn't fallback to a 404 handler; webb: json bugfix
- x-grid: take auto_cols_w from rowset
- $fs.lua: consolidated dir() entry fields: file, path, relpath
- debugger.lua module (handy little command-line debugger)
- path.lua: path.rel() bugfix
- webb cx() bugfix
- $fs: dir() recursive option
- fs.scan() -> fs.scandir()
- $fs: dir() uses glue.cmp syntax for sorting (removed desc arg)
- fs.lua bugfix
- path.lua bugfix
- glue.cmp() changed syntax for descending
- glue.keys(), glue.sortedpairs() can take a glue.cmp() string as their cmp arg
- glue: tests for glue.cmp()
- glue.eachword(); glue.cmp()
- fs: fs.scan()
- openjpeg Lua module (WIP)
- dicom: decode image frames (WIP)
- jpegls.lua -> charls.lua
- openjpeg dll/so build script (win & linux)
- tasks: more work (still WIP)
- DICOM decoder (WIP: tags only, no pixel data yet)
- jpegls decoder
- charls and openjpeg submodules
- webb_query: release_dbs() hooks reimplemented on top of getownthread()
- webb.lua: context switching reimplementation over getownthreadenv(); json API externalized to json module
- json module based on cjson
- $sock.lua: threadenv, getthreadenv, getownthreadenv
- sock.lua: inherited thread environments: threadenv, getthreadenv(), getownthreadenv(); thread finalizers now work for cowrap() threads too
- coro.lua: added finalizers; removed tracebacks (add them by back by replacing coro.pcall with errors.pcall); simplified thread finishing: now a single code path handles that
- more on tasks ...
- tasks module: WIP
- events.lua: pub/sub event system with namespaces/tags
- glue.slice()
- reverted the decision to format based on select('#',...)
- schema_std: number formatting
- mysql_print: separate col map for renaming cols
- logging: live(s) and log(s) interpreted differently than live(s,...) and log(s,...)
- $cmd: say(s) interpreted differently than say(s, ...)
- mysql_print: column renaming
- x-nav: percent type takes 0..1 values not 0..100
- glue.js/divs.js: move events API from divs to glue; ajax: req.onchunk(s, finished) callback
- $cmd & $daemon: command line named options support. syntax: -foo, -no-foo, -foo=bar
- $fs: rm() returns false for not_found
- $: names() -> words()
- logging: no longer using t.type and t.debug_prefix but taking those from t's metatable
- xrowset_sql: names() -> words()
- xrowset: names() -> words()
- webb_auth: names() -> words()
- schema_std: to_text() moved to type_attrs so it can be used on the client-side of a rowset (i.e. call schema:resolve_types() on the rowset result's fields
- xmodule fix
- mysql_print: hidecols & showcols options
- schema: type_attrs table for supplying additional field attrs on the client-side of a rowset
- glue.extend() supports sparse arrays
- webb.lua: json_arg() decodes sparse arrays; getpage() returns null for json null but otherwise gets rid of nulls; names() -> words()
- sqlpp: names() -> words()
- proc: getmetatable(p) now holds .type and .debug_prefix
- uri.lua: segments can be sparse array
- glue.lua: timeofday() formatting; glue.names() -> glue.words()
- xrowset: refactored reload_row() to update computed fields
- schema_std: new types: timeofday_in_seconds, time, time_s, time_ms, time_timeago, time_date (timestamp-based types)
- glue.lua: duration() formatting improvements
- x-nav.js: reloading the nav does not overwrite currently changed but unsaved values
- x-input: field.to_text(v) never called with null v
- glue.js: duration formatting improvements
- x-sign-in-dialog; other small fixes
- webb small fixes; spa_action()
- fs: allow reading zero bytes but it's a noop
- sqlpp: rename_user() drop_user() grant_user()
- sqlpp fixes
- xrowset_sql: limit option
- sqlpp_mysql: schema reflection fixes
- sqlp: rename database
- sock: log connect and accept before doing it
- schema_std: align
- mysql_print: opt.null (empty string by default)
- mysql: query(sql, {dry=true}); use(db, {dry=true}); connect({pass= or password=})
- x-chart: refactoring (better separation of model from view); x-nav: apply custom filter, sort and index on a user-supplied array of rows
- xrowset_sql: choose db dynamically based on query params
- logging: get_osinfo() is back
- xrowset fields can now be augmented with schema type and flags
- x-menu: item responds to 'load' event
- x-chart: min_val, max_val, sum_col/avg|sum|min|max syntax
- x-nav: row_group() filtered arg (invalidation NYI)
- ajax button notify fix
Total commits: 90