Great stuff. Thanks Gustaf!

On 20 February 2015 at 09:55, Gustaf Neumann <neum...@wu.ac.at> wrote:

> Dear Friends of NaviServer,
>
> the last release of NaviServer was more than half a year or more than
> 730 commits ago, so it becomes time for a release of 4.99.7 if this
> is fine with everybody.
>
> Below is the preliminary summary of the changes since the release
> of 4.99.6 (excluding the changes in the modules). If you have
> pending commits please let me know.
>
> i'll hope to be able to do the usual testing, updates of the
> versions numbers in the documentation, tagging, summarizing
> of the module changes etc. over the weekend.
>
> all the best
> -gustaf neumann
>
> PS: sooner or later a release 5.0 seems unavoidable, but are coming closer.
>
>
>
>
> ======================================
> NaviServer 4.99.7, released 2015-XX-XX
> ======================================
>
> Changes relative to 4.99.6
>      215 files changed, 20782 insertions(+), 13282 deletions(-)
>
> New Features:
>
>    * Added Interface to NaviServer to read/write directly
>      via driver routines. The new command "ns_connchan"
>      provides a higher level alternative to the idiom
>      "ns_conn channel" + Tcl-commands. The new command
>      uses the internal socketcallback infrastructure and allows to
>
>        - detach the currently open connection channel from a
>          connection thread, to
>        - read/write/close the channel from other threads, and to
>        - query the states to then currently detached channels
>          (similar to "ns_writer list")
>
>      By accessing the driver infrastructure, "ns_connchan" makes it
>      possible to read/write from/to SSL/TLS channels. The new command
>      makes it easy e.g.  to implement WebSockets over SSL/TLS
>      (ws://... and wss://...) which is not possible with the
>      pre-existing infrastructure.
>
>      Summary of Advantages:
>        * use the same interface for http and https (and other drivers)
>        * no (potential) problems with select() in Tcl when using
>          many (>1024) file descriptors
>        * less potential problems with Tcl-Sockets (buffering, translations)
>        * lower resource consumption
>
>      Implemented interface:
>         ns_connchan detach
>         ns_connchan close channel
>         ns_connchan list ?-server server?
>         ns_connchan callback ?-timeout s? ?-receivetimeout s?
> ?-sendtimeout s? channel command when
>         ns_connchan read channel
>         ns_connchan write channel string
>
>    * Improved ns_log handling
>      - new subcommand [ns_log stats] returns the statistics
>        from calls to ns_log by severity-level. This allows
>        to write monitoring tools to provide rough overviews
>        at which time at which server what kind of
>        servers/warnings/... were produced
>
>      - Allow to modify logging of sql statements via
>           ns_logctl severity Debug(sql) on
>        at runtime
>
>      - Add debugging severity for tasks "Debug(task)"
>
>    * Added ability to load a driver module without listening on a
>      port: This is useful in cases, where the driver registers
>      client commands (such as nssock or nsssl) and only these
>      are wanted. Loading the driver without listening can be
>      achieved by specifying "0" for the port.
>
>    * Improved support for windows compilation with native compilers
>      for 32 and 64 bit (Many thanks to Andreas Piskorski)
>
>
> Performance Improvements:
>    - add compiler hints likely/unlikely
>    - make Ns_Encrypt threadsafe under Linux (reduce mutex)
>    - use getpwnam_r, getpwuid_r, getgrnam_r, and getgrgid_r instead of
>      their thread-unsafe counterparts. This change allow these functions
>      to run without locking.
>    - reduce size of compressed requests in several situations (empty
> io_vecs)
>
>
> Bug Fixes:
>    * fixed encoding in [ns_conn content]
>    * fixed incorrect result of "ns_conn protocol" (returned empty)
>    * fixed crash when a thread was created with
>      "ns_thread begindetached" and an error occurred
>      during startup
>    * fixed memory management for TclThread by moving TclThreadArg into
>      thread local storage
>    * fixed race condition in TLS cleanup
>    * fixed bug in argument parsing of "ns_cond"
>    * fixed setting of private/shared in ns_module
>    * fixed bug with "ns_adp_ctl stream on"
>    * move network module filtering to the front to avoid double loading
>      of tcl modules (many thanks to William Scott Jordan for the fix)
>    * ns_http:
>      - fix trailing slashes in some urls
>      - fix possible race condition when time gap between "ns_http queue"
>        and "ns_http wait" is larger
>    * minor fixes in nscgi
>    * windows
>      - fixed Ns_NormalizePath() for //foo/bar paths on Win32 (bug #1162890)
>      - use distinct bit-patterns for signal detection under windows.
>       - fix array unset bug
>    * fixed a potential race condition in writer threads
>    * [ns_perm delperm] fixed ignoring of argument "-noinherit"
>    * fixed reply headers in HEAD requests
>
>
> Documentation improvements:
>    - improve typesetting, wording
>    - remove more obsolete content (e.g. concerning CVS, old dummy
> parameters)
>    - use examples from existing code basis
>    - improve comment density in source code
>    - document missing subcommands, such as "ns_time format"
>
>
> Tcl API Changes:
>    * mark "ns_geturl" as deprecated, use ns_http instead
>    * marked redundant names of subcommands in "ns_thread" as deprecated
>      - ns_thread begin -> ns_thread create
>      - ns_thread getid -> ns_thread id
>      - ns_thread join -> ns_thread wait
>      - ns_thread get -> ns_thread handle
>    * allow time interval of "-timeout" for "ns_db gethandle" to be
>      specified with second factions (in the usual "ns_time" format)
>
>
> C API Changes:
>    - [ns_conn content]: new flag "-binary" to return always the raw bytes
>    - [ns_thread begin|begindetached]: added flag "-name" for naming
>      thread explicit
>
>
> Configuration Changes:
>    - update Makefiles as recommended in documentation
>
>
> Code Changes:
>
>    * Many of the changes are the result of a (sometimes over-picky)
>      code-checkers on unix and windows systems, in particular pc-lint,
>      cppcheck and the clang static checkers. Many thanks to
>      Maurizio Martignano for setting up the testing framework
>      based on SonarQube.
>
>    * Function prototypes and API definition
>      - add missing function prototypes
>      - removed occurrences of old-style prototypes (when functions are
> defined without arguments)
>      - removed unneeded external references and symbols and unreferenced
> enumeration values
>      - aligned argument names in function prototypes with function
> definitions
>      - added non-null/returns non-null assertions for prototypes
>      - added asserts to check non-null properties
>      - added "const" when appropriate
>      - added missing "static" declarations
>
>    * Improved and more consistent macro definitions
>      - use INT2PTR and PTR2INT consistently when converting between
>        integers and pointers
>      - use NS_TRUE/NS_FALSE instead of 1/0
>      - use NS_INVALID_FD instead of -1
>      - use NS_SOCKET and NS_INVALID_SOCKET instead of int/-1
>      - use NS_INVALID_PID for invalid pids
>      - change from usage of -1 or INVALID_SOCKET (windows predefined
> constant)
>        to NS_INVALID_SOCKET due to confusions
>      - use UNUSED consistently
>      - character properties and conversions
>         . new macro CHARTYPE for testing character properties
>         . new macro CHARCONV for converting characters
>      - added a new macros PTR2NSSOCK and NSSOCK2PTR in analogy to PTR2INT
>        and INT2PTR to mask more win incompatibilities
>      - prefer "const" over "CONST" unless in Tcl interface
>      - improved consistency of variable and macro naming
>      - put macro values into parenthesis
>
>    * Improved general code quality
>      - reduced variable scopes
>      - remove cases of undefined C behavior
>      - prefer leaving a switch statement via "break", and not via "return"
>      - move assignments out of if-conditions
>      - brace body of "if" statements and "for" loops
>      - make ignoring of function results explicit
>      - avoid shadowing of variable names
>      - fix potentially uninitialized local and static variables
>
>    * Used more precise and consistent types
>      - prefer type "bool" over "int" when appropriate
>      - use unsigned types for bit operations
>      - prefer size_t, ssize_t, socklen_t, pid_t, nfds_t over int
>      - use consistently uintptr_t for nextids
>      - use enumerations instead of plain defines on some occasions
>      - prefer boolean expression
>      - reduce implicit conversions
>        (signed/unsigned, signed constants, loss of precision, ...)
>      - removed many cases of casts of complex expressions
>      - reduce prohibited operations with plain (signed) chars
>      - recast results of <<
>      - standardize type definitions of objv in ObjCmds to the
>        variant recommended by Tcl man pages
>
>    * Improved C-standard compliance
>      - silence "-pedantic" compilation with -stc=c99 under linux on most
> cases
>      - avoid c90 identifiers starting with str[a-z], to[a-z], E[A-Z], _*
>      - avoid c90 reserved identifier "signal", "free", "remove", "time"
>      - added missing printf macros
>
>    * Improved usage of c-library functions and OS abstraction
>       - use arc4random() when available
>       - use crypt_r() when available
>       - prefer memcpy() over strncpy(), since it has in most cases the
>         appropriate semantics and it is faster
>      - new/fixed OS abstractions functions/macros:
>         ns_lseek, ns_dup, ns_dup2, use ns_open, ns_close, ns_lseek, ns_dup,
>         ns_dup2, ns_write, ns_read, ns_mkstemp
>
>    * Removed potential crashes from buffer overflows
>       - use memory bounded functions instead of potentially buffer
>         overflowing functions
>       - replace unsafe atof() by strtod()
>       - replace unsafe atoi() by strtol()
>       - replace call to deprecated function asctime() by a call to
>         asctime_s()
>       - remove hard-coded sizes of ip-addresses and replace it
>         by NS_IPADDR_SIZE
>       - don't hardcode sizes for string arrays
>
>    * Use of modern-style argument parser Ns_ParseObjv() on several places
>      instead of manual argv parsing
>         ns_job interface, ns_truncate, ns_ftruncate,
>         ns_addrbyhost, ns_hostbyaddr
>
>    * Make mutex timings configurable via #define NS_NO_MUTEX_TIMING
>
>    * Improved code formatting
>      - add emacs editor hints to to keep formatting conventions
>      - prefer spaces over tabs
>
>    * Extended regression test
>
>
>
>
>
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
>
> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
> _______________________________________________
> naviserver-devel mailing list
> naviserver-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/naviserver-devel
>



-- 
David Osborne
Qcode Software Limited
http://www.qcode.co.uk
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to