Skip to content

Releases: allegory-software/allegory-sdk

0.6

26 Jun 20:25
Compare
Choose a tag to compare
0.6 Pre-release
Pre-release
  • 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

17 May 10:17
Compare
Choose a tag to compare
0.4 Pre-release
Pre-release

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