• last updated 5 hours ago
Constraints: committers
Constraints: files
Constraints: dates
introduced "ad_file" as a means to avoid unexpected tilde substitution in file names

  1. … 50 more files in changeset.
improve spelling

  1. … 13 more files in changeset.
Whitespace cleanup

Fix doc typos

apm_source and apm_guess_db_type are called from multiple packages

improve spelling

  1. … 2 more files in changeset.
Revert massive replacement of empty list creation sentences. The use of '[list]' instead of '{}' adds semantics that could be used for performance improvements in the future, such as using a different internal representation. There is already work in this direction, avoiding the generation of the string representation during comparison of empty strings (huge thanks to Stefan Sobernig for the pointer: https://core.tcl.tk/tcl/info/44527c632ed609c2).

  1. … 475 more files in changeset.
Prefer '{}' to '[list]' when creating empty lists

  1. … 71 more files in changeset.
merged changes from the oacs-5-9 branch and resolved conflicts

  1. … 7834 more files in changeset.
We can't source the current setup files, since these perform as well the master loading of OpenACS.

Use "file tail" instead of full path for sourcing tcl file

(re)source top-level tcl-files when copying it

Improve spelling

  1. … 8 more files in changeset.
Fix spelling errors, use OpenACS

  1. … 6 more files in changeset.
Improve robustness of file operations against names starting with a "-"

  1. … 8 more files in changeset.
Ease debugging

bootstrap installer:

- added csp policy to the files upgradeable via apm

- bumped version number to 5.9.1d5

  1. … 3 more files in changeset.
- Use global variables to reduce lock contention on busy sites:

* $::acs::default_database replaces [nsv_get db_default_database .]

* $::acs::known_database_types replaces [nsv_get ad_known_database_types .]

- Cache db_driverkey per-thread (variable ::acs::db_driverkey($dbn))

to reduce high number of locks

  1. … 4 more files in changeset.

ad_proc reform:

- use nsf::proc for defining ad_procs, when nsf::proc is available

- nsf::proc is part of the environment of XOTcl2 and provides

an efficient, C-implemented argument parser that can replace

the scripted *__arg_parser of OpenACS.

- The benefits are performance and reduced memory consumption.

* Simple functions (where the calling overhead was a large

part of the execution times can become several times faster

(e.g. db_name is 3x faster, cookie handling is 2x faster),

for functions with much db-activities the percentage will

be less.

* The memory consumption (RSS) of a site like OpenACS.org

is reduced by about 15%.

NEW (with nsf::proc)

::ad_get_cookie x: 10.93 microseconds per iteration

::ad_get_cookie ad_session_id: 21.95 microseconds per iteration

::dt_systime: 24.89 microseconds per iteration

::db_name: 8.70 microseconds per iteration

::db_string dbqd.null.g "select version() from dual": 316.66 microseconds per iteration

::ad_convert_to_html "hello world": 102.29 microseconds per iteration

OLD (without nsf::proc)

::ad_get_cookie x: 19.42 microseconds per iteration

::ad_get_cookie ad_session_id: 30.10 microseconds per iteration

::dt_systime: 27.55 microseconds per iteration

::db_name: 32.28 microseconds per iteration

::db_string dbqd.null.g "select version() from dual": 366.69 microseconds per iteration

::ad_convert_to_html "hello world": 160.51 microseconds per iteration


proc mtime cmd {set c 5000

set t [time [list time $cmd $c]];

regexp {^(-?[0-9]+) +} $t _ mS1;

set ms [expr {$mS1*1.0/$c}];

return "[format %6.2f $ms] microseconds per iteration"


set tests {

{::ad_get_cookie x} {::ad_get_cookie ad_session_id} {::dt_systime}

{::db_name} {::db_string dbqd.null.g "select version() from dual"}

{::ad_convert_to_html "hello world"}


foreach t $tests {append ::_ $t ": " [mtime $t] \n}

set ::_


  1. … 9 more files in changeset.
- allow upgrade of blank-master.{tcl,adp} via install-from-repository. This files should be free of site-specific customizations

  1. … 3 more files in changeset.
Merging back to HEAD branch oacs-5-8 (using tag vg-merge-oacs-5-8-from-20141027).

  1. … 2547 more files in changeset.
- document apm_bootstrap_upgrade

- improve error reporting during bootstrap loader: list dependency order in a human oriented manner, report more errors from sourcing files http://openacs.org/forums/message-view?message_id=4172245

  1. … 1 more file in changeset.
- allow error propagation also from bootstrap loader

- white space change: replace tabs by spaces

  1. … 3 more files in changeset.
- add error reporting to package reloader (many thanks to Andrew Helsley, see: http://openacs.org/forums/message-view?message_id=4166397)

  1. … 4 more files in changeset.
- allow to upgrade basic startup files (openacs-4/tcl/*tcl)

to be upgraded via "install from repository" by adding

and after-upgrade callback to bootstrap-installer and

copying the files from there.

- move initialization of nsv_arrays for apm to -init file in acs-tcl

(as suggested by Peter Marklund, but never implemented)

- use double colon prefix rather than "global" statement

to denote global variables

- bump version number to 5.8.1d3

  1. … 3 more files in changeset.
- use lock-free ::acs::rootdir variable instead of nsv variable

  1. … 1 more file in changeset.
- brace expressions to allow for tcl compilation

- use "in" or not in (ni) operator instead of lsearch (for readability and performance)

  1. … 10 more files in changeset.
- use "in" or not in (ni) operator instead of lsearch (for readability and performance)

  1. … 2 more files in changeset.