Update to version 2.81
test: Can't test for Y2038 fix because 32 bit machines
glibc on all 32-bit machines fails the Y2038 test. Change that to use
the maximum possible 32-bit value instead (sigh)
Remove unused variable in builtin-date.c
Add date conversion functions localtime, gmtime, timelocal, timegm
These just wrap the C versions, except they report actual years,
rather than years since 1900 and January is month 1, not 0.
Add JSON tests
Add floats to JSON module.
Support floating point values in JSON input and output.
Make nickle-tutorial.pdf build reproducibly
Set TeX dates to RELEASE_DATE.
Remove PDF /ID entry.
Ensure data cache value array is aligned adequately
Data caches are used to store pointers and other potentially long
values. Make sure that the position of the values portion of the cache
is aligned to a suitable address. Fixes a bus error on sparc64 machines.
Building nickle on arm64 now, change package names
built .deb and .rpm files are now amd64 instead of i386
Update to version 2.78
Also depend on bison and flex
newer version of flex doesn't have yyunput
This line was just removing a warning about yyunput unused; newer
versions of flex don't even have that symbol anymore. Better to have a
warning than fail to compile.
Adapt tests to new automake requirements
Automake now has a separate variable for the program to run the test
scripts with, and breaks if you try to embed that in the
TESTS_ENVIRONMENT variable, which used to be how this was done.
Use 'G' format for elements when printing arrays in 'g' format
This restricts array printing to just recurse one level.
When using pointer as hash, first cast to intptr_t
This avoids a compiler warning when pointers are not the same size as
HashValues.
Initialize 'replace' in NewTypedBox
When left uninitialized, undefined results will occur. This caused a
test failure on MIPS when being built with PIE support.
Debian bug 857840.
Reported-by: James Cowgill <jcowgill@debian.org>
Open quote character is a single char, not a string
When checking to see if a string needs to be dequoted, check the first
character of the string against the quote character, rather than
checking the whole string.
Probably using strings for the quote markers wasn't the best API
choice as this would have been caught by typechecking had the quote
characters been an int instead.
Define release date in configure.ac and use that instead of build date
This avoids encoding the current date into the resulting output so
that it can be reproduced.
Add JSON input/output code
Reverse data written in linked FileChains
FileChains are linked in newest-in order, so they need to be written
last-first.
Add is_hash primitive
Checks whether a value is a hash
Abort karatsuba multiply in more places
removed gratuitous -O2 from Makefile.am to let CFLAGS handle it
Added a lightly-optimized choose(n, k) function to math.5c.
The lack of a choose operator has continually bugged me;
I've constantly rewritten it "the bad way". This is a
lightly optimized version of that function that seems to
handle most edge cases reasonably. It has only been tested a
little bit.
added check mode to sudoku solver
cleaned up a bunch of sudoku solver stuff
added edge cache to sudoku example
tutorial: Close a couple of SGML tags
nsgmls found a couple of unclosed tags which may make some versions
of docbook tools unhappy.
Fix release docs to use git log instead of git-log
git-log disappeared a long time ago
actually added Sudoku example
added Sudoku generator example
added sudoku example
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
Update to version 2.77
Fix RPM spec file to not install tutorial twice
By default, the tutorial gets stuck in /usr/share/doc/nickle, while
rpm wants it in /usr/shar/doc/nickle-<version>. Ignore the one in /usr/share/doc/nickle.
doc: Expand tabs to spaces in .sgml files
Makes code examples readable.
Build tutorial when docbook2pdf is available
And build it on debian
tutorial: Use sgml entities instead of < and >
Tutorial: twixt doesn't have an optional 'else' block
This was a proposed feature that was removed
Rename nickle tutorial to nickle-tutorial
Makes any built files include 'nickle' by default
corrected some Nickle Tour nits
Handle OpFarJump in CompileReachable
A FarJump within a catch block references instructions one or more
frames outside of the instruction context. When checking for reachable
code, look down inside the catch blocks to see if any of the FarJumps
within them touch the target instruction.
Fixes this example:
void foo() {
for (;;)
try {
} catch uninitialized_value(string x) {
break;
}
}
Without this fix, the 'break' will not get noticed and no ReturnVoid
will be appended to the object code for 'foo', leaving the break
dangling in space.
New instructions IsType and HasMember need entries in OpNames
Otherwise, the array no longer matches the enum
Fix VALIDATE_EXECUTION test code
Needed ObjType defined.
Update to 2.76
Don't erase twixt pointer during JumpContinue until after stack copy
Otherwise, if MemCollect occurs during the stack copy, the twixt's
stack copy can get collected.
Check for lost stack chunks
If a stack chunk gets collected, the 'type' field will get
cleared. Check to see if this has happened and abort.
Add debug code to check thread validity during execution
If something gets corrupted, it's useful to have this code to help
track it down.
Handle initializers with undefined types.
Emit an error instead of crashing.
Handle systems which don't define PATH_MAX (Hurd)
This is a hack; a correct fix would involve actually allocating the
correct length object.
Version 2.75
Delete ancient .cvsignore files
Not exactly useful anymore
Examples shouldn't be executable
Fix Source URL in nickle.spec file
Point at nickle.org, as appropriate.
Make 'G' format limit array and struct recursion
This makes stack traces tractable.
Switch to dh for debian builds
Vastly simplifies debian/rules...
Stop printing recursive structs with 'g' format.
This gets annoying really quickly, so just terminate the recursive
struct printing right away.
Handle ref types in &foo->bar operations
For some reason, this case was left out of the usual ref type hacks
Version 2.74
Switch from debuild to pdebuild
Catch more package building problems by using pbuilder.
Fix Semaphore::wait logic (again) - partial means we've woken up
The only way to run do_Semaphore::wait with 'partial' set to true is
if the thread is waking up; in this case, the semaphore count may well
be negative if other threads are also waiting. Ignore the count in
this case and just complete the operation.
Add explicit debian source format 3.0 (native)
Keep lintian happy
Clean up some debian lintian warnings
Fix new FileVPrintf 'G' format comparison
Was comparing the pointer to the representation enum. oops.
Update debian/changelog for eventual 2.73 release
git-log has become git log
Needed to build ChangeLog
Back autoconf requirement to 2.64 so debian stable can run it
Shorten backtrace display
Don't display composite values in backtraces so that the
backtrace doesn't get flooded with giant values.
Typecheck switch expressions
Make sure switch expression and case expresssions are all type compatible.
Add is_type and has_member built-ins
These provide the ability to do run-time type comparisons without
needing full introspection in the language.
Add list.5c
A useful data type
add 'millis' function to return a clock in milliseconds.
Useful when doing things with sleep
Add Semaphore::count
Useful for checking current semaphore value without
modifying it.
Clean up do_Semaphore_wait
Make it clear that the semaphore count gets bumped down the first time
into this function.
Check for thread switch even if current thread is last
Threads can switch due to semaphores or other signals; that can leave
the current thread last in the run queue. Check for any case where
running changes instead of only when the current thread isn't last.
Make scanf not report valid conversion on blank input.
scanf was incorrectly accepting " " as a valid number, returning a
conversion of 0. Fix this by checking for empty strings in any numeric
conversion.
Add tests for scanf function
Scanf incorrectly accepts blank strings for numbers; here's a pile
of tests to validate various numeric input.
Add sort and skiplist to standard nickle library
These are too useful to just be examples
Add gamma function
Printing rational 0 in 'e' format doesn't need an exponent
Computing a negative exponent requires a non-zero value, so just skip
that if the value is zero
NaturalGcd must return a Natural* when aborting
It was returning One (an Integer) instead of one_natural;
floor() and ceil() should work on imprecise floats
They should return an approximate integer value instead of raising an exception.
Set version to 2.73 in prepartion for eventually release
Only call readline tty cleanup on signal readline is active
If readline isn't active, the cleanup functions tend to make a mess of
the tty state, so don't call them. This really only matters when
handling SIGTSTP.
Update to version 2.72
Keep readline from catching signals
This stops readline from catching signals, letting nickle handle them
all by itself.
Block in select instead of sigsuspend when waiting for I/O
The kernel doesn't appear to reliably deliver SIGIO while the
application is blocked, so sit in select instead of sigsuspend to make
sure we hear about pending I/O.
rename configure.in to configure.ac
Switch version to 2.72 in preparation for an eventual release
wait3 returns 0 when there's nothing left to do
Don't keep looping when wait3 is done
Update to version 2.71
Clean up a pile of build warnings
Signal return types, unused return values and stepping off the end of
the typePrim array (the value of which was unused anyways).
Catch attempts to use uninitialized pointer contents
Dereferencing a pointer to uninitialized storage is an error, instead
of passing this value along to callers, catch it immediately and raise
an exception. Check for this case in the ++ and -- operators to
generate a better error message (otherwise, we'll pass Void along and
generate an error much later).
Exit after two consecutive interrupts
If the first interrupt isn't received by the nickle code,
when the second one comes in, just exit
Cleanup struct type changes
Replace most parameterized macros with static inline functions
Typechecking, decent compiler warnings and smaller code.
Replace macros with static inline functions in value.h
Actual type checking, and smaller compiler output to boot.
Get rid of old-school variable length struct allocations
This confuses the new _FORTIFY_SOURCE bits in GCC, so use the
'sanctioned' form of placing a zero-length array at the end of the
struct.
to ternary expressions, even when the result is discarded.
While here, update to nickle-2.69. Only difference seems to be that
configry is generated with newer autotools.
Changes:
commit 815ea2aadc2644a426b87f8c4e41d58a01d50de0
Author: Keith Packard <keithp@keithp.com>
Date: Sat Jun 21 02:31:29 2008 -0700
Bump to version 2.68
commit e278cfc926e5cd2ee51c9e45a642b2803d93cceb
Author: Keith Packard <keithp@keithp.com>
Date: Sat Jun 21 02:28:53 2008 -0700
Bump debian standards to 3.8.0
commit d69f9ba5dbf231bf2c8ecd5ab55e550d11f5ebae
Author: Keith Packard <keithp@keithp.com>
Date: Sat Jun 21 02:28:34 2008 -0700
Add README.release
commit 74d032db530e2441f47b68549d18a70956ddf601
Author: Keith Packard <keithp@keithp.com>
Date: Mon May 19 13:22:11 2008 -0700
Non-interactive stdin is always available for reading.
Failing to set the 'stdinOwned' flag meant that you could never read from
stdin which wasn't a terminal. Oops.
commit d0604e797cf194eb025a1784766ebea8cf38ec87
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 26 23:21:41 2008 -0700
Allow background nickle to not poll on tty ownership
When stdin is connected to a terminal but nickle is not the foreground
process on that terminal, the io code would poll to wait for ownership to
flip back to nickle so that reads could be performed without generating a
signal. Now, nickle waits until someone actually tries to read from the
terminal before starting to poll. This means that simple background
processing nickle programs will not poll every 100ms.
commit fd8d02af5bf2884858108421fec40b8c7ca9863b
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 26 16:22:44 2008 -0700
Remove support for non-SIGIO pipes
Older version of the kernel (before 2001) failed to generate SIGIO on pipes,
so nickle had code to poll instead. I think we can safely remove that code
now.
commit 5106300e425315c5f753dd4e1bf2c1ff6d19db64
Author: Keith Packard <keithp@keithp.com>
Date: Fri Mar 21 12:31:00 2008 -0700
Fix floating point printing to correctly round output
commit e7f78ce3e66259f0a08c0099de4b89ad739c03c8
Author: Keith Packard <keithp@keithp.com>
Date: Thu Mar 20 10:56:38 2008 -0700
Fix divide_by_zero exception type in fourfours.5c example
commit e00e48546d26c6e0c22c70cb7eb14e81c897c61e
Author: Keith Packard <keithp@keithp.com>
Date: Thu Mar 20 10:20:52 2008 -0700
Make SRPM + RPM build work by serializing dependencies.
$(SRPM) $(RPM): ...
build
fails as it does 'build' twice.
commit 48e852689a43de236f93aa13172d31c8eb536fc1
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 19 23:24:45 2008 -0700
Makefile fixes: make main.o depend on Makefile, ensure debuild actually does
commit 27ace3a23d90e8e5fe16b943743a8d9144cca7e6
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 19 23:12:13 2008 -0700
Avoid having the 'pretty_print' builtin show two error messages.
NamespaceLocate takes a 'complain' boolean that will print out an error
message, but the pretty_print command also raises an exception when it fails
to find the name. Two errors is at least one too many here.
commit 31e633b55cece8a6e46d763b2e51c974b450a12f
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 19 22:38:18 2008 -0700
Rename the builtin Process namespace to PID to not conflict with the Process library
commit ffc553a721015347939cc07da4a81577d86093d0
Author: Keith Packard <keithp@keithp.com>
Date: Wed Mar 19 22:37:49 2008 -0700
FileGetErrorMessage returns a Value, not a char *
changes:
* CCITT/ITU CRC-32 computation example
* changed import PRNG to autoimport
* get rid of archaic "v" print and scan functions
* fixed signededness bug in integer carry calculation
(which was patched in pkgsrc)