2006-12-05 Keith Packard version 2.56 * Fix Catch object initialization order to avoid segfault 2006-12-05 Keith Packard version 2.55 * Fix mismatching catch nesting depth in multi-peer try/catch * Add fourfours.5c example 2006-5-20 Keith Packard version 2.54 * builtin-toplevel.c time() builtin needs to return all 32 bits 2006-5-20 Keith Packard * Makefile.am: * configure.in Compute NICKLELIBDIR at build time, not config time 2005-2-15 Bart Massey * examples/coroutines.5c: New example using continuations to implement channels and coroutines. 2005-2-12 Bart Massey * examples/search.5c: New example using continuations to implement constraint satisfaction search. 2005-1-28 Bart Massey * README.solaris: Update a bit to reflect current reality. 2005-1-28 Bart Massey version 2.53 * debian/changelog: Update for version 2.51-2.53 2005-12-24 Keith Packard * Makefile.am: Use rpmbuild instead of rpm to build rpms. * scanf.5c: Permit {} in numbers to allow exact rational input 2005-12-23 Bart Massey * parse-args.5c: Make usage() function user-visible by exporting closure when parse_args() is called. 2005-12-11 Bart Massey version 2.52 * prng.5c: Since it's now autoimported, autoload ARC4 so that it will continue to work. * examples/menace2.5c: * examples/miller-rabin.5c: * examples/mutextest.5c: * examples/randtest.5c: * examples/rsa-demo.5c: * examples/skiplist.5c: * examples/skiplisttest.5c: * examples/sort.5c: * examples/smlng/generate.5c: Add needed autoloads/autoimports to make the examples work again. Not obvious that PRNG shouldn't continue to be loaded, and maybe even imported, although that would also force in ARC4 in the current implementation. 2005-12-10 Bart Massey version 2.51 * builtin.5c: Don't load every random library; make the user autoload or autoimport them if they want them instead. * process.5c: Replaced putc and getc in copy function. * compile.c: * lex.l: * gram.y: * pretty.c: * type.c: Added &&= and ||= operators. * execute.c: * opcode.h: Added Drop opcode needed for short-circuit code for &&= and ||=. 2005-12-06 Keith Packard version 2.50 * debian/changelog: Update for version 2.50 2005-12-01 Keith Packard * math.5c: cbrt must use more intermediate precision to hit the specified error bound 2005-11-20 Bart Massey * process.5c: New code to handle process creation provides system(), popen(), and run_process(). 2005-10-26 Bart Massey * parse-args.5c: Fixed to cope properly where args field of argd is uninit. Most common cause: no optional arguments. 2005-10-20 Keith Packard * type.c: (TypeBinaryIntegral): Permit any numeric type in this function, result type will always be integer. Let run-time system catch any representation problems. 2005-09-04 Bart Massey * parse-args.5c: Fixes for various buglets including mis-parsing single-character options and using the wrong variable in an error message. * command.5c: Changed the semantics of argv. It is now dim 0 iff the program reads from standard input *and* was not passed arguments. 2005-09-02 Bart Massey * Makefile.am: Older versions of GNU Make (before 3.80, apparently) seem to require shell invocation macros to be defined with := * gram.y: Solaris yacc gives an error if a type is given to a non-terminal that does not actually appear in the grammar. Removed opttypename. 2005-08-03 Keith Packard * command.5c: Fix minor regression from argument parsing rewrite; library path was not augmented by script directory as it used to be. 2005-08-02 Keith Packard * builtin-string.c: (do_String_index), (do_String_substr): * file.c: (FileStringWidth), (FilePutString): * lex.l: * rational.c: (RationalDecimalPrint): Fix compiler warnings about signed/unsigned mismatches for StringNextChar (thanks GCC 4) * debian/changelog: * debian/control: Update for version 2.49 Use new readline (5), update policy to 3.6.2 2005-08-02 Bart Massey * doc/tutorial/basics/invoke.sgml, nickle.1.in: Fix documentation to reflect new argument parsing. 2005-07-31 Bart Massey version 2.49 * parse-args.5c: Big rewrite of parse-args code to work better and be more usable. Will now accomodate Nickle startup. * builtin.5c, command.5c: Changes to use parse-args instead of ad hoc argument parsing at startup. Changed key conventions: -e now takes a single argument; -e, -f, and -l can be freely mixed; interactive mode can now have argv through "--"; others? * compile.c: Fixed trivial spelling error. 2005-07-08 Keith Packard * builtin-sockets.c: (do_Socket_connect): Set SO_BROADCAST just in case * compile.c: (CompileCall): CompileCall with auto_reference == True must not return a pointer to the return type as this function is called from CompileLvalue which is defined to return the type of the underlying object, not a pointer to that type. The alternative is to return a reference type, and I'm fairly sure that's not right as & is supposed to return a pointer type, not a reference type, right? * nickle.spec.in: Make sure the nickle headers are installed * test/Makefile.am: * test/reftest.5c: Add a test for reference types which checks the above change 2005-06-16 Keith Packard version 2.48 * debian/changelog: Prepare for version 2.48 2005-06-16 Keith Packard * compile.c: (CompileLvalue), (CompileCall), (_CompileExpr), (_CompileStat), (ObjUnFuncName): &poly foo() { ... }; &poly x = &foo(); Compiler generated 'Dereference, do_reference' in this call which caused the object referenced by foo() to be copied. Notice case of call to reference value function followed by & operator and elide the Dereference/do_reference pair. 2005-06-04 Keith Packard * math.5c: Add π as an alias for pi * rational.c: (IntPowMod): Use signed_digit instead of long long 2005-03-15 Keith Packard version 2.47 * debian/changelog: Update for version 2.47 * builtin.c: (BuiltinType), (BuiltinArgType), (BuiltinAddFunction): Builtin functions return pointers, not references as reference return values now auto-dereference 2005-03-15 Keith Packard * hash.c: (HashGet): Check for NULL hash value in a valid hash element. This occurs when a reference to a hash element is made and then not stored through. 2005-02-24 Eric Anholt reviewed by: Keith Packard * func.c: (NewBuiltinCode): Initialize base.func pointer to NULL. 2005-01-14 Keith Packard * compile.c: (CompileCall): Functions returning reference type need auto-dereference on return value 2005-01-13 Keith Packard version 2.46 * Bump to version 2.46 2005-01-13 Keith Packard reviewed by: * builtin-file.c: (import_File_namespace): * file.c: (FileInitErrors), (FileGetError): Use error_type typedef instead of directly using the type. * builtin-toplevel.c: (do_setdims): * execute.c: (ThreadArrayInd): * sched.c: (RaiseException): Use ArrayValue to catch uninitialized values * float.c: (DoublePart): Raise exception on non-float args * gram.y: * lex.l: Rearrange publish/class/type grammar elements to make them prettier Fix ignorenl decrementing to avoid going below zero on syntax error. 2004-12-24 Keith Packard version 2.45 * debian/changelog: Update to version 2.45 2004-12-23 Keith Packard * foreign.c: (ForeignMark), (NewForeign): * value.h: Change foreign API to include mark so that foreign objects can use nickle allocator if they like. Note this is an ABI incompatible change. * scanf.5c: EOF not handled correctly in '%s' scanf formats 2004-12-18 Keith Packard * Makefile.am: * builtin-foreign.c: (do_Foreign_load): * configure.in: Look for -ldl, but don't depend on that, instead look for dlopen et al directly. Makes it build on FreeBSD 2004-12-17 Keith Packard * array.c: (BuildArrayType): Create and initialize dimension vector in BuildArrayType. 2004-12-16 Keith Packard * float.c: (FloatPrint): Trim '0's from floating point when no precision is specified 2004-12-16 Keith Packard * builtin.c: (BuiltinSetUserdefType), (BuiltinType): * builtin.h: Add support for up to 100 user-defined types for builtin functions * file.c: (FileCheckBlocked): Fixed an execution ordering bug which should have caused an infinite loop in some weird file blocking cases. * float.c: (FloatPrint): Don't print fractional part if it rounds to zero. Still need to trim trailing zeros from fractions. * foreign.c: (ForeignFree): Best return 1 or the object will not actually be freed. * pretty.c: (PrettyDoc): Doc strings with multi-byte chars were broken. * array.c: (BuildArrayType): * union.c: (BuildUnionType), (BuildEnumType): * value.h: Add type construction helpers for foreign libraries 2004-12-11 Keith Packard * builtin-foreign.c: (do_Foreign_load), (import_Foreign_namespace): * foreign.c: (ForeignEqual), (ForeignPrint), (ForeignHash), (ForeignMark), (ForeignFree), (ForeignInit), (NewForeign): Forgot to add actual foreign dataype and interface code. 2004-12-10 Keith Packard * builtin.c: (BuiltinSetUserdefType), (BuiltinType): * builtin.h: Expose mechanism for using user-defined types in builtin functions 2004-12-10 Keith Packard * Makefile.am: * builtin-namespaces.h: * builtin-sockets.c: (import_Socket_namespace): * builtin.c: (BuiltinType), (BuiltinInit): * builtin.h: * configure.in: * gram.y: * io.c: (IoTimeout): * lex.l: * mem.h: * nickle.h: * string.c: (NewStrString): * value.c: (ValueInit): * value.h: Add support for dlopen and Foreign datatypes * execute.c: (ThreadsRun): * file.c: (FileCreate), (FilePutRep), (FileCheckBlocked), (FileSetBlocked): * sched.c: (BlockHandlerMark), (ThreadsRegisterBlockHandler), (ThreadsUnregisterBlockHandler), (ThreadsBlock), (ThreadInit): Add block handlers. Change file block handling to use timers only on pipes, not on disk files or terminals. That makes for a lot fewer signals while idle at the prompt. 2004-12-10 Keith Packard * prng.5c: ARC4 requires positive keys 2004-12-10 Keith Packard * float.c: (FloatPrint), (NewDoubleFloat), (DoublePart): Round floats correctly for printing. Add double<->real conversion for (eventual) use in C code. 2004-12-09 Keith Packard reviewed by: Martin Hoch * main.c: Add #include as required for Mac OS X. 2004-12-01 Keith Packard version 2.44 * Makefile.am: * debian/changelog: * debian/copyright: * debian/lintian.override: * debian/rules: * examples/Makefile.am: * examples/qbrating.5c: Don't ship non-DFSG examples. Update to version 2.44 Fix debian bits to ignore extra (necessary) COPYING files Mark debian/copyright with all Copyright data 2004-12-01 Keith Packard * stack.c: (StackCopy): Must reference new stack object before allocating chunks lest the collector run and eat our stack. Zero out previous pointer to make sure the stack is valid in case the collector is called. * stack.h: Declare panic when debugging stack problems. 2004-11-30 Keith Packard * float.c: (FloatHash): Provide hash function for float representation * hash.c: (generate_crc32_table), (HashCrc32), (HashInit): * value.h: Implement general purpose crc32 function for hashing * natural.c: (NaturalHash): * string.c: (StringHash): Use crc32 hash for naturals and strings * value.c: (ValueHash), (NewDataCache): Return Zero for representations without hash functions instead of uninit (oops). Initialize datacache to zero before adding as a root (just a cleanup) 2004-11-30 Bart Massey * math.5c Added lsb() 2004-11-29 Keith Packard * configure.in: Move AC_CONFIG_AUX_DIR above AM_INIT_AUTOMAKE as needed for new automake version 2004-11-29 Keith Packard * mem.c: (newBlock), (MemAddRoot): Call to panic had wrong arguments and caused a segfault. 2004-11-22 Bart Massey * builtin-toplevel.5c: Change dims() to return dimensions in order consistent with array defns, setdims(), etc. Bug discovered by Jeremy Greenwald. 2004-11-18 Keith Packard * examples/sort.5c: Change copyright symbol encoding from Latin-1 to UTF-8 * execute.c: (ThreadArray), (ThreadArrayInd): Catch negative array dimensions. Bug discovered by James LaMar 2004-11-15 Keith Packard * examples/COPYING: * examples/Makefile.am: * examples/miller-rabin.5c: * examples/mutextest.5c: * examples/numbers.5c: * examples/polynomial.5c: * examples/prime.5c: * examples/randtest.5c: * examples/restart.5c: * examples/roman.5c: * examples/rsa-demo.5c: * examples/rsa.5c: * examples/shortpaths.5c: * examples/skiplisttest.5c: * examples/smlng/COPYING: * examples/smlng/Makefile.am: * examples/smlng/context.5c: * examples/smlng/generate.5c: * examples/smlng/parse.5c: * examples/smlng/test.5c: * examples/turtle/COPYING: * examples/turtle/Makefile.am: * examples/turtle/snowflake.5c: * examples/turtle/snowflake.tex: * examples/turtle/turtle.5c: Add a bunch of copyright and license information 2004-11-15 Keith Packard * lex.l: Lost **= somehow. 2004-11-15 Keith Packard * compile.c: (CompileImplicitInit): Implicitly initialize resizable arrays to zero-length array. 2004-11-15 Keith Packard * examples/Makefile.am: * examples/apsp.5c: * examples/comb.5c: * examples/cribbage.5c: * examples/erat.5c: * examples/google-puzzle.5c: * examples/initializer.5c: * examples/is-prime.5c: * examples/kaiser.5c: * examples/menace2.5c: Add licensing information to some of the examples 2004-11-8 Bart Massey * string.5c: inchars() had the arguments to index() backward. 2004-11-7 Bart Massey * string.5c: Add shiftn(), shift(), chump() functions. 2004-11-7 Bart Massey * string.5c: Add wordsplit() function. 2004-10-19 Keith Packard * lex.l: Permit any non-ASCII character in an identifier. Better discrimination requires a better lexer generator as flex can't deal with UTF-8. 2004-10-17 Keith Packard * gram.y: Add POW2 and POW3 operators * lex.l: Add several non-ascii character equivalents. Make \r be white space (and ignored) * mem.h: Remove spurious semi-colon from ALLOCATE definition. 2004-10-09 Keith Packard * gram.y: Permit multiple namespaces in import statements 2004-10-09 Keith Packard * value.c: (ShiftL), (ShiftR): Optimize shifts of small ints by small ints 2004-10-01 Bart Massey * compile.c: Compiler dumped core when trying to create a variable of incomplete structure type. 2004-09-22 Bart Massey * gram.y: Made try blocks as well as try statements not create a new scope, for convenience in using try the way it is intended to be used. 2004-09-21 Bart Massey * gram.y: Added operator precedences to resolve 3 of 4 shift/reduce conflicts in the grammar. * Makefile.am: Make sure builtin.o is always rebuilt, so that the "build" variable is kept up-to-date. 2004-09-17 Keith Packard * array.c: (ArrayResize): Resizing arrays to zero elements would cause segfault when adding to the array 2004-09-16 Keith Packard * examples/google-puzzle.5c: Avoid having leading 0's convert in octal. Reformat to reasonable line lengths. Note that this still gets the wrong answer. 2004-08-22 Keith Packard * builtin-file.c: (do_File_print): Base is allowed to be zero (in which case it uses 10). 2004-08-22 Bart Massey * builtin-file.c: don't allow bases smaller than 2 in do_File_print(). Closes bug report by Clem Taylor . 2004-08-12 Keith Packard * Makefile.am: add clean-local to remove nickle.1 and nickle.spec * debian/changelog: Update to version 2.43 2004-08-10 Keith Packard * mem.c: (newBlock), (MemAllocateHunk), (MemAllocateHuge), (activeReference), (activeReset), (MemInitialize), (MemAddRoot), (MemReference), (MemReferenceNoRecurse), (mark), (sweep), (MemCollect): * mem.h: * memp.h: Clean up new allocator implementation. 2004-08-10 Keith Packard version 2.43 * Makefile.am: * avl.c: * avl.h: Remove avl tree code * mem.c: (MemHunkMore), (MemAllocateHuge), (tossFree), (busy), (checkBlockRef), (checkRef), (MemReference), (MemReferenceNoRecurse), (MemCollect): * mem.h: * memp.h: Rewrite garbage collector to place reference bits right in each object by stealing the low bit of the type pointer. 2004-08-04 Keith Packard * debian/changelog: Update to 2.42, noting significant changes. 2004-08-04 Keith Packard version 2.42 * Bump version to 2.42 2004-07-28 Keith Packard * configure.in: * main.c: (main): Unlimit stack so that GC can recurse forever * examples/Makefile.am: * examples/mutextest.5c: * examples/skiplist.5c: * examples/skiplisttest.5c: Add skiplists * gram.y: Fix precedence of ** so that ++x**2 works * hash.c: (HashEqual): Make sure hash element in table is valid before comparing * lex.l: Track newlines in files better. * test/orderofoptest.5c: Add comments about x value for each test. 2004-07-22 Bart Massey * value.h: * builtin-toplevel.c: (do_make_uninit): Be able to mark a box uninit (for shift()) 2004-07-09 Keith Packard * func.c: (MarkFuncCode), (MarkBuiltinCode): * symbol.c: (SymbolLocalMark): Missed a few pointers in mark code * mem.c: (MemInitialize): * sched.c: (RaiseException): A nasty one -- jumping into a continuation that is referenced from the thread object itself (catch) drops the reference to the continuation before finishing the jump. Combined with careful MemCollect timing, this can break the resulting thread state. * stack.c: (StackPush), (StackPop), (StackDrop), (StackReset), (StackReturn), (StackElt), (StackCopy), (stackMark): * stack.h: Add assertions to make sure the stack pointer is in range * util.c: (wait_write), (debug), (panic): Deal with non-blocking file descriptors 2004-07-07 Keith Packard * compile.c: (CompileCountCatches), (CompileCatch), (InstDump): * execute.c: (ThreadCatches), (ThreadRaise), (ThreadEndCatch), (ThreadUnwind), (ThreadsRun): * sched.c: (FarJumpContinuation), (ContinuationTrace): * value.h: Parallel catch blocks are peers, not nested. This affects how FarJump execution inside them happens; in particular, all of the peer catches are unwound before the handler is invoked so all jumps from inside use the same NonLocal data structure. Also added yet more debugging to continuation execution. * gram.y: Allow 'enum switch' 2004-06-19 Keith Packard * execute.c: (ThreadCall): Tail call to lonjmp should not pop frame * func.c: (FuncPrint): Make 'g' format print only the declaration, leaving 'v' printing the definition as well. * sched.c: (do_Thread_list), (TraceFunction), (TraceFrame), (TraceIndent), (ContinuationTrace), (RaiseException): Clean up continuation debug code to include call trace and adjust for changes since the last time it was used. 2004-06-17 Keith Packard version 2.41 * Makefile.am: Add commands to upload release files to nickle.org * debian/changelog: Note changes since last debian package (2.38) 2004-06-17 Keith Packard * compile.c: (CompileLvalue): Generalize the previous fix to handle the remaining cases, including names. 2004-06-17 Keith Packard * gram.y: Update conflict comment to note new reduce/reduce conflicts caused by accepting ** and && as unary operators 2004-06-17 Keith Packard * compile.c: (CompileLvalue): Handle nested & in Lvalues with auto_reference so that &&7 works. * gram.y: * lex.l: * nickle.h: * scope.c: (NamespaceLocate): Make ** and && work as unary operators. Get CodePtr out of CurrentFrame so that execution can refer to frame contents up the static link. 2004-06-13 Keith Packard * file.5c: Don't open /dev/null until needed for mkchild 2004-06-13 Keith Packard * abort.5c: * arc4.5c: * builtin-namespaces.h: Add CVS Header and Copyright * file.5c: Clean up function doc comments * math.5c: Use 0.{3} for 1/3 * builtin.c: (BuiltinType): * type.c: (TypeNumeric), (TypeIntegral), (TypeIsCotype), * value.h: (TypeBinaryGroup), (TypeBinaryField), (TypeUnaryGroup), (TypeInit): Remove typeGroup/typeField Add (#if 0'd out) TypeIsCotype while we figure out how its supposed to work. 2004-06-08 Keith Packard version 2.40 * abort.5c: * arc4.5c: * builtin-command.c: (import_Command_namespace), (do_Command_pretty_print): * builtin-debug.c: (import_Debug_namespace): * builtin-environ.c: (import_Environ_namespace): * builtin-file.c: (import_File_namespace): * builtin-math.c: (import_Math_namespace): * builtin-semaphore.c: (import_Semaphore_namespace): * builtin-sockets.c: (import_Socket_namespace): * builtin-string.c: (import_String_namespace): * builtin-thread.c: (import_Thread_namespace): * builtin-toplevel.c: (import_Toplevel_namespace): * builtin.5c: * builtin.c: (BuiltinType), (BuiltinException), (BuiltinAddException), (BuiltinAddFunction), (BuiltinInit): * builtin.h: * command.5c: * compile.c: (CompileComprehension): * ctype.5c: * debug.c: (do_Debug_dump): * file.5c: * file.c: (FileFopen): * func.c: (MarkFuncCode), (NewFuncCode), (MarkBuiltinCode), (NewBuiltinCode): * gram.y: * history.5c: * lex.l: * math.5c: * mutex.5c: * nickle.h: * parse-args.5c: * pretty.c: (PrettyDoc), (PrettyBody), (doPrettyPrint), (PrettyPrint): * printf.5c: * prng.5c: * scanf.5c: * socket.5c: * string.5c: * string.c: (NewCharString): * symbol.c: (SymbolExceptionMark), (NewSymbolException): * value.h: Add doc strings to all functions and exceptions. 2004-06-03 Keith Packard version 2.39 * gram.y: Fix fix for crash with empty array/hash initializers (really do need 'null' node in expr tree) 2004-06-03 Keith Packard * gram.y: Fix crash with empty array/hash initializers 2004-06-02 Keith Packard * gram.y: * lex.l: Eliminate 'primary' non-terminal. Add ENDFILE token to ensure files end at top level. Change NL handling to allow NL after simple declarations Allow 'func' values to not require SEMI termination 2004-05-27 Keith Packard version 2.38 * Makefile.am: * configure.in: * debian/changelog: * nickle.1.in: Build nickle.1 and nickle.spec from Makefile where VERSION is set Update to version 2.38 2004-05-27 Keith Packard version 2.37 * debian/changelog: Update for 2.37 2004-05-27 Keith Packard * int.c: (IntPlus), (IntMinus): * nickle.h: * value.h: Overflow detection from small integer add/subtract was broken. 2004-05-27 Keith Packard * value.c: (ShiftR): Ceiling, not Round for negative left operand in shift right 2004-05-27 Keith Packard * natural.c: (NaturalCompliment): Bogus effort to truncate compliment answers resulted in broken IntegerLand operation 2004-05-26 Keith Packard version 2.36 * compile.c: (CompileDimensionStorage), (CompileArrayDimValue): * type.c: (TypeArrayMark): * value.h: Distinguish between array types of static variables and initializers within static scope -- dimension storage is different. * debian/changelog: update to version 2.36 2004-05-26 Keith Packard version 2.35 * examples/menace2.5c: * examples/turtle/snowflake.5c: Clean up examples to not try and run themselves as scripts 2004-05-26 Keith Packard * compile.c: (CompileArrayDimValue): Array dimension values are always local in static initializers * Makefile.am: * bench/Makefile.am: * configure.in: * examples/Makefile.am: * examples/menace2.5c: * examples/randtest.5c: * examples/rsa.5c: * examples/smlng/.cvsignore: * examples/smlng/Makefile.am: * examples/smlng/data.sgml: * examples/smlng/parse.5c: * examples/smlng/test.5c: * examples/turtle/Makefile.am: * examples/turtle/snowflake.5c: * make-version.sh: * scanf.5c: * update-version.sh: Clean up examples so they all work again. Remove old files. add 'scanf' to top-level namespace 2004-05-25 Keith Packard * Makefile.am: * builtin.c: * configure.in: Completely ignore VERSION support from configure and grub it out of the ChangeLog using $(shell) from the Makefile. 2004-05-25 Keith Packard * debian/changelog: Add comments for version 2.35 2004-05-25 Keith Packard * compile.c: (CompileLvalue), (CompileAssign), (CompileAssignOp), (CompileAssignFunc), (CompileArrayInit), (_CompileExpr), (CompileDecl): Allow &rvalue and have it automatically box the value. 2004-05-21 Bart Massey version 2.34 * version.m4, Makefile.am, make-version.sh The version number is going stale again. Start putting it in the ChangeLog, and have the Makefile grub it out of there. Get rid of version.m4 After all, the ChangeLog has to be good for something :-). 2004-05-20 Keith Packard * compile.c: (CompileLvalue), (_CompileExpr): Ok, so the previous change was incomplete. Restructure CompileLvalue so that the processing of ampersands is unified. The unified rules were changed so that the value of a reference to a reference type is converted to a pointer instead of a reference. That seems confusing enough. Basically, it allows: &int r; *&int pr = & & r; 2004-05-20 Keith Packard * compile.c: (_CompileExpr): When compiling '&' expressions, if the operand is of ref type, the result type is the referenced type, not NULL. 2004-05-20 Bart Massey * gram.y, compile.c pretty.c Two-argument for() loop is legal now (no init expr). * version.m4 Bumped the version to 2.33 2004-05-17 Bart Massey * parse-args.5c: Added argument parser library. * Makefile.am: parse-args.5c will be installed. * version.m4 Bumped the version to 2.32. 2004-05-13 Bart Massey * string.5c: Rebuild dequote() and parse_csv() to handle quote contexts using generator functions. 2004-05-13 Bart Massey * builtin-toplevel.c: * nickle.h: Rename is_defined() to is_uninit(). 2004-05-12 Bart Massey * builtin-toplevel.c: * nickle.h: Add a predicate is_defined() to test whether a reference is to a value. 2004-04-23 Keith Packard * test/optest.5c: * test/orderofoptest.5c: Turn each test into an assertion which exits with an error on failure so that 'make check' validates the interpreter 2004-04-18 Keith Packard * pretty.c: (doPrettyPrint): Label profile times in ms * profile.c: (sigprofile), (ProfileInterrupt), (do_profile): profile tracking code was quite busted, generating largely random numbers. 2004-04-16 Keith Packard * builtin-command.c: (command_name), (do_Command_new_common), (do_Command_delete): * builtin-environ.c: (do_Environ_get), (do_Environ_check), (do_Environ_unset), (do_Environ_set): * builtin-file.c: (do_File_print), (do_File_open), (do_File_filter), (do_File_reopen), (do_File_string_read): * builtin-sockets.c: (address_lookup): * builtin-string.c: (do_String_length), (do_String_new), (do_String_index), (do_String_substr): * configure.in: * edit.c: (EditFile): * execute.c: (ThreadOpArray): * file.c: (FilePutsc), (FileStringWidth), (FilePutString), (FileVPrintf): * int.c: (IntPrint): * lex.l: * scope.c: (NamespaceLocate): * string.c: (StringPlus), (StringEqual), (StringLess), (StringPrint), (StringNextChar), (StringGet), (StringLength), (StrzPart), (StringHash), (NewString): * value.h: Change string representation to counted rather than null-terminated. Allow nulls in the middle of strings. Trap strings with nulls passed to the operating system. Raise exception when attempting to access the null which is stored off the end of the string. 2004-04-16 Bart Massey * string.5c: (parse_csv): Last field wasn't being chomped and dequoted. 2004-04-16 Bart Massey * string.5c: (parse_csv, _dequote): Fixed unclosed string detection case in parse_csv. Fixed unclosed string detection in _dequote. Fixed function name in parse_csv exception msg. 2004-04-15 Bart Massey * builtin-string.c: (do_String_substr): Allow a zero-length substr() at the end of the string. * string.5c: Clean up a bunch of substr() references. Remove accidental redundant code. 2004-04-15 Bart Massey * file.c: (FilePuts): Handle emitting backslash in quoted string properly. 2004-04-15 Bart Massey * string.5c: Added new string functions _dequote(), dequote(), inchars(), readcsv(), and associated machinery. * builtin.5c: String depends on Ctype now, so reordered. 2004-04-15 Keith Packard * array.c: (ArrayResize): Fix warning about uninit 'good' 2004-04-15 Keith Packard * autogen.sh: Always regenerate configure in case version.m4 changes * configure.in: Update to autoconf 2.59 syntax * debian/changelog: * version.m4: Update to version 2.31 2004-04-15 Keith Packard * array.c: (ArrayEqual), (ArrayPrint), (ArrayHash), (ArrayMark), (BoxVectorMark), (NewBoxVector), (FillBoxVector), (NewArray), (ArrayResize): * builtin-toplevel.c: (do_dims), (do_setdims): * execute.c: (BuildFrame), (ThreadArrayInd), (ThreadArrayReplicate), (ThreadArrayInit), (ThreadRaise), (ThreadExceptionCall), (ThreadOpArray), (ThreadsRun): * file.c: (FileFilter), (FileMakePipe): * gram.y: * hash.c: (HashKeys): * main.c: (setArgv): * sched.c: (RaiseException), (RaiseStandardException): * scope.c: (NamespaceLocate): * type.c: (TypeCompatibleAssign): * value.c: (CopyMutable): * value.h: Change resizable array representation to be a vector of single entry boxes. This allows clean semantics for array shrinking -- outranged elements still have storage, but are no longer accessible through the array, even if the array is subsequently enlarged. * builtin-file.c: (do_File_filter), (do_File_end), (do_File_ungetb): Change File::end semantic to actually peek at the file and check whether the next read would return EOF. This seems like the only useful semantic here. * builtin-string.c: (do_String_new): Was using ArrayDims instead of ArrayLimits * builtin.5c: white space change * compile.c: (AppendObj): Must propogate error when appending objects together 2004-04-15 Bart Massey * lex.l: Allow identifiers to start with "_". 2004-04-14 Bart Massey reviewed by: Keith Packard * hash.c: (HashGet), (HashSet): Make hash table grow when full on get of default value. Clean boundary case in test in HashSet. Keithp really did this. 2004-04-11 Bart Massey * string.5c: (split): Add split function ala awk. 2004-04-11 Keith Packard * configure.in: Add AM_MAINTAINER_MODE * debian/changelog: Update debian to 2.30 * version.m4: Update version to 2.30 2004-04-10 Keith Packard * doc/tutorial/intro/variables.sgml: Primitive docs for resizable arrays and hashes. 2004-04-10 Keith Packard * builtin-toplevel.c: (do_setdims): setdims arguments need to be inverted to match array dimension order for ArrayResize. 2004-04-10 Keith Packard * box.c: (BoxRewrite): Ugh. Array shrink causes problems with references to elements now outside the box boundaries. "real" fix is hard, so here's a kludge to keep the interpreter from crashing and (perhaps) prevent the error from propagating through the application. 2004-04-10 Keith Packard * array.c: (ArrayPrint), (ArrayResize): * builtin-toplevel.c: (do_setdims), (do_setdim): * builtin.c: (BuiltinType): * compile.c: (CompileArgs), (CompileTypecheckArgs), (CompileCountInitDimensions), (CompileBuildArray), (CompileSizeDimensions), (CompileImplicitArray), (CompileArrayInits), (CompileImplicitInit), (CompileArrayType), (InstDump): * execute.c: (ThreadArrayIndex), (ThreadsRun): * file.c: (FilePutDimensions), (FilePutSubscriptType): * gram.y: * hash.c: (HashGet), (HashSetDef), (HashRef): * lex.l: * main.c: (setArgv): * nickle.h: * pretty.c: (PrettyParameters), (PrettyArrayInits), (PrettyArrayInit): * type.c: (NewTypeArray), (TypeInit): * value.h: Make value distinction between resizable and unresizable arrays. Types now use '...' for resizable arrays and '*' for unresizable arrays of unspecified size. Also fixed a bug in the implicit array dimension computation for multi-dimensional arrays -- the dimensions were compiled in the reverse order. 2004-04-10 Keith Packard reviewed by: * compile.c: (CompileHashInit): * execute.c: (ThreadsRun): * gram.y: * hash.c: (HashPrint), (HashMark), (NewHash), (HashGet), (HashSetDef), (HashRef), (HashCopy): * opcode.h: * value.h: Add default hash table values, and initializes for same. * type.c: (TypeUnaryRef): Oops. Poly couldn't be a ref 2004-04-01 Keith Packard * debian/changelog: Mark debian bug 241417 closed 2004-04-01 Keith Packard * debian/changelog: Update to 2.29-1 * integer.c: (NewInteger): * mem.c: (MemReference), (MemReferenceNoRecurse): More pointer casting magic for gcc on ia64 2004-04-01 Keith Packard * gcd.c: (NaturalRslInplace), (NaturalBdivmodInplace): Ouch. NaturalRslInplace was not checking argument for zero 2004-04-01 Keith Packard reviewed by: Mike Harris * .cvsignore: * Makefile.am: * build-rpm: * configure.in: * debian/.cvsignore: * nickle.spec: * nickle.spec.in: * version.m4: Mike Harris provided a new .spec file. Move .spec file to .spec.in so that version can be set automatically. Add 'rpm' target in the Makefile Bump version (now 2.29) 2004-04-01 Keith Packard * value.h: Add casts to avoid warnings where sizeof (int) != sizeof (void *) 2004-04-01 Keith Packard Debian bug 241417 * command.5c: Catch File::open_error when loading files and print reasonable message. exit(1) immediately if an file or library from the command line fails load. 2004-03-02 Keith Packard * debian/changelog: * debian/control: Separate build dependencies with commas 2004-02-26 Keith Packard * Makefile.am: Fix debuild stuff to always recreate tar files and share setup * debian/changelog: Update to 2.28 2004-02-26 Keith Packard * builtin/.cvsignore: Work harder at getting rid of builtin directory 2004-02-26 Keith Packard * builtin/Makefile.am: * builtin/bsdrandom.c: * builtin/namespaces.h: * builtin/semaphore.c: * builtin/sockets.c: * builtin/string.c: * builtin/thread.c: * builtin/toplevel.c: Get rid of builtin directory contents 2004-02-26 Keith Packard * Makefile.am: * builtin.c: version.h has moved * Every file Change copyright to 2004 2004-02-26 Keith Packard * Makefile.am: * debian/changelog: * debian/compat: * debian/control: * debian/copyright: * debian/nickle.install: * debian/rules: * make-version.sh: Clean up debian build instructions to make non-native package that conforms to policy. Change version.h build instructions 2004-02-15 Keith Packard * Makefile.am: * configure.in: * builtin.h: Move builtin sources to top level directory so that make works right -- leaving them in the subdir meant that yacc/lex wouldn't get run at the right time. * value.h: Use unsigned bitfields to make :1 values easier to read in gdb Prototype more functions * debian/control: Switch standards version to 3.5.10 to make lintian happy * debian/rules: Don't install .cvsignore files in docs 2004-02-15 Keith Packard * Makefile.am: * test/Makefile.am: * builtin/Makefile.am: Fix EXTRA_DIST. Remove automatic version number updates. That should be done by CVS. Make separate build dir work. * debian/changelog: * debian/control: * debian/copyright: Take over debian package creation. * file.c: (FilePutDoubleDigitBase), (FilePutUIntBase), * nickle.h: (FileVPrintf): Add 'D' format to print out 64-bit values (for tick counts) 2004-01-18 Keith Packard * box.c: (NewBox): box->replace was uninitialized 2003-12-13 Keith Packard * compile.c: (CompileBuildArray), (CompileArrayInit), (CompileImplicitInit): Use canonical type to see if ANONINIT is an array. Don't need to call TypeCanon before recursive CompileImplicitInit call. * version.m4: 2003-10-25 Keith Packard * Makefile.am: * autogen.sh: Use automatic dependencies, fix up yacc stuff a bit. Replace autogen.sh with short version 2003-10-24 Keith Packard * compile.c: (CompileLvalue): * version.m4: Couple of valgrind problems: Initialize branch.offset field in all instructions so that CompileIsReachable can blindly fetch them before the real offset is set. Set the static link offset to zero for names contained in declarations; it was otherwise uninitialized. 2003-10-25 Keith Packard * builtin/Makefile.am: * builtin/builtin.c: (BuiltinType): * builtin/builtin.h: * expr.c: (NewExprComma): * nickle.h: * version.m4: Eliminate bogus explicit dependencies from Makefile.am Eliminate need for gram.h in builtins Move #include version.h from builtin.h to builtin.c 1.99.0: First semi-public test release 2.00: Stable enough for Debian package 2.20: Things are pretty good now