FreeWRL

 view release on metacpan or  search on metacpan

JS/js/ChangeLog  view on Meta::CPAN

Tag JSREF_RELEASE_19980414 (4/14/98):

- RegExp unicode fix.

- Added new iterator-style JSObjectOps enumeration API for host objects.
  See jspubtd.h for details.
	
Tag JSREF_RELEASE_19980413 (4/13/98):

- Date fixes:
  - ECMAv1 fix: fixed function length for Date setters.
  - Bug workaround: avoid MSVC optimizer bug in Date.
  - Y2K fix: Use the verbose '%#c' date formatter for toLocaleString
    on windows, to get a 4 digit date.

- New thread safety fixes from bjorn:

  - Added more asserts to catch cases where the thread
  identifier stored in the context is out of synch with the current
  thread. JS_ATOMIC_ADDREF now calls a function instead of a
  macro, so that when compare-and-swap is implemented using busy-wait
  (e.g. SPARC v8), we avoid being confused by the busy value. For the same
  reason, we now call AtomicRead at certain places in jslock.c. Finally, the
  environment variable JS_NO_THIN_LOCKS, when set, effectively turns off
  the thin locks so that all locking is done using NSPR only.

- ECMAv1 numeric fixes: print preceding 0 when formatting 0.4, ignore supplied
  radix to Number.prototype.toString when printing non-finite numbers.
	
Tag JSREF_RELEASE_19980403 (4/3/98):

- API renaming: JS_NewRuntime for JS_Init, JS_DestroyRuntime for JS_Finish
  (the old names are maintained for backward binary compatibility; the new
  names are macros).

- Improved JS_THREADSAFE locking, with compare-and-swap based optimization of
  the uncontested lock and unlock cases to avoid DLL-crossing and worse native
  OS locking overhead.

  The Request/GC interlock enforced by JS_BeginRequest, JS_EndRequest, JS_GC,
  and JS_MaybeGC allows requests on the same cx to nest (JS_BeginRequest may
  be called more than once before JS_EndRequest, so long as the number of End
  calls matches the number of Begin calls).

  Thread-safety for prarena.c and prdtoa.c, based on jslock.h/JS_THREADSAFE.

- Experimental JS exception implementation, subject to change.  Any value may
  be thrown.  The catch expression must be of the form (v) or (var v).  Catch
  code must re-throw as there is no way yet for the compiler to decide that no
  catch clause matched (and more than one catch clause makes no sense, yet --
  no finally yet, either).

- JS_ConvertArguments API addition, for converting an argc/argv pair according
  to a simplified scanf-like format string.

- JS_GetPropertyAttributes and JS_SetPropertyAttributes API additions, which
  take C-string property names (Unicode string and indexed elements TBD).

- JS_CloneFunctionObject, for server-like environments where code (functions)
  should be shared in a prototype object, but data (global variables) must be
  per request in a set of objects, one per concurrent request.  You load the
  functions in the prototype, then "fault them in" on demand via the request
  object's resolve hook, using JS_CloneFunctionObject to make a lightweight
  copy that has the right scope (__parent__) link.

- Whacked js.c (more whacking needed) so it uses fewer secret js_* calls and
  more JS PUBLIC/FRIEND API entry points.

- Simplified Windows MSDEV build regime to use js.mak/mdp only, which builds
  the DLL as a sub-project, then compiles js.c and links the JS shell.

- Fix a lying comment about JS_AddRoot in README (which is being turned into a
  real "JS API tutorial" document, due soon).

- Better error reporting for an operand that does not convert to function, and
  spiffed up the decompiler (jsopcode.c) to remove hardwired opcode lengths.

- Atom indexing does not abuse the atom's next link and a flags bit, which had
  been done in haste long ago (and not fixed till now), but which required that
  compilation be single-threaded throughout a runtime.

- ECMAv2 change: undefined is a top-level property with undefined value (it may



( run in 1.315 second using v1.01-cache-2.11-cpan-39bf76dae61 )