2019-03-27  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBytecodeInterpreter.m (dispatchBytecode:):
    Use numberWithBool: when pushing true and false values onto the stack.

2019-03-25  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSmalltalkScriptObject.m (forwardInvocation:):
    Call super class implementation for unimplemented methods so that they
    get reported as unimplemented rather than silently returning nil.

2019-02-22  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * GNUmakefile:
    * NSDictionary+additions.h:
    * NSDictionary+additions.m:
    Implement Smalltalk collection protocol methods for NSDictionary.

2017-12-27  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.m (valueWithArguments:): Remove comma that unintentionally
    breaks an exception format string

    * STCompilerUtils.h: Fix wrong return type in method declaration
    flagged up by the GNUstep runtime.

2014-11-01  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.m (-valueWithArguments:): Fix bug where the cached context
    of a block could be reused prematurely.
    Note: This could happen only when a block is called recursively and
    entered more than once in an inner invocation, as, e.g., in the
    following code to compute the Fibonacci numbers:
      fib := [:n |
        (n <= 1)
          ifTrue: [1]
          ifFalse: [(fib value: (n - 1)) + (fib value: (n - 2))]].
      fib value: 3.
    Note that the code still does not produce the correct result because
    blocks are not (yet) reentrant in the interpreter, but at least the
    interpreter does not crash anymore.

2014-11-01  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.m (-dealloc): Release cachedContext attribute.
    * STBlockContext.m (-dealloc): Restore method to release homeContext
    attribute.
    * STBytecodeInterpreter.m (-dealloc): Fix typo in method name and
    release activeContext attribute.
    * STBytecodeInterpreter.m (-interpretMethod:forReceiver:arguments:):
    Release newContext also when an exception is raised while interpreting
    the method.
    * STCompiledScript.m (-executeInEnvironment:): Release script object
    also when an exception is raised while interpreting the script.
    * STCompiler.m (-dealloc): Release environment attribute.
    * STCompiler.m (-compileString:): Release local auto release pool also
    when an exception is raised during compilation.
    * STSmalltalkScriptObject.m (-forwardInvocation:): Release local
    autorelease pool and args array also when an exception is raised while
    interpreting the method.

2014-10-14  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlockContext.h (STExecutionContext, -initWithInitialIP:stackSize:):
    * STBlockContext.m (-initWithInitialIP:stackSize:):
    * STBlock.m (-valueWithArguments:):
    Remove unused interpreter attribute and corresponding argument from
    STBlockContext and its initializer.

2014-10-14  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STMethodContext.h (+methodContextWithMethod:, initWithMethod:):
    * STMethodContext.m (+methodContextWithMethod:, initWithMethod:):
    * STBytecodeInterpreter.m (-interpretMethod:forReceiver:arguments:):
    Remove unused environment argument from STMethodContext initializer.

2014-10-14  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSmalltalkScriptObject.m (-forwardInvocation:): Set the return
    value of the invocation object also when the exit pseudo method of the
    script object is called.

2014-10-14  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.m (-value:value:):
    * STBlock.m (-value:value:value:):
    Add missing nil terminator to argument list of arrayWithObjects.

2014-09-09  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (-setReceiverVariables:):
    Do not assign a non-mutable array to a mutable array attribute.

2014-09-09  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiledCode.h (STCompiledCode, -namedReferences,
    -initWithBytecodesData:literals:temporariesCount:stackSize:namedReferences:):
    * STCompiledCode.m (-namedReferences,
    -initWithBytecodesData:literals:temporariesCount:stackSize:namedReferences:):
    Change namedRefs attribute into a non-mutable array.

2014-09-09  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBytecodeInterpreter.m (-sendSelectorAtIndex:withArgCount:):
    * STCompiler.m (-compileString:, -emitPopAndStoreTemporary:,
	-emitPopAndStoreVariable:, -emitPopAndStoreReceiverVariable:,
	-emitSendSelector:argCount:):
    Fix NSDebugLLog format issues detect by clang.

2013-06-30  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (-lineNumberForIndex:, -readNextToken): Tidy
    source.

    * STSourceReader.m (-readNextToken): Bug fixes:
    - Prevent out of range accesses for the input string.
    - Exponent of a real number must contain at least one digit.
    - Incorrect token range for character literals.
    - Incorrect token range for symbol immediately before end of source.

2013-05-26  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STGrammar.y (temporaries): Allow empty list.
    * STGrammar.m: Regenerated.

2013-05-26  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * NSNumber+additions.h:
    * NSNumber+additions.m:
    * STBlock.h:
    * STBlock.m:
    * STBlockContext.h:
    * STBlockContext.m:
    * STBytecodeInterpreter.h:
    * STBytecodeInterpreter.m:
    * STBytecodes.h:
    * STBytecodes.m:
    * STCompiledCode.h:
    * STCompiledCode.m:
    * STCompiledMethod.h:
    * STCompiledMethod.m:
    * STCompiledScript.m:
    * STCompiler.h:
    * STCompiler.m:
    * STExecutionContext.h:
    * STExecutionContext.m:
    * STLiterals.h:
    * STLiterals.m:
    * STMethodContext.h:
    * STMethodContext.m:
    * STSmalltalkScriptObject.m:
    * STSourceReader.h:
    * STSourceReader.m:
    * STStack.h:
    * STStack.m:
    int->NSInteger transition

2013-04-06  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (-readNextToken): Fix bug where the last character
    of an identifier was dropped when the assignment operator ':=' follows
    it immediately.

2013-04-03  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * NSArray+additions.m (-collect:): Properly handle nil results from
    block.

2013-04-03  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (-lineNumberForIndex:): Revert broken fix and
    replace it by code that now works correctly for all kinds of line
    endings.

2013-03-25  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBytecodeInterpreter.m (-returnValue:): Fix bug where the
    STInterpreterReturnException was not handled when a block returns nil.

2013-03-24  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (-compileMethod:): Follow Smalltalk convention to
    return the receiver from a method without an explicit return
    statement.

    * STCompiler.m (-compileStatements:blockFlag:): Return nil from an
    empty block and the receiver from an empty method.

2013-03-24  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STExecutionContext.h: Change type of instruction pointer attribute
    to NSUInteger.
    * STExecutionContext.m (-invalidate, -isValid): Invalidate an
    execution context by setting its instruction pointer to NSNotFound.

    * STMethodContext.m (-invalidate, -isValid):
    * STBlockContext.m (-invalidate, -isValid): Delete method
    implementations so that the method and home context attributes of a
    method context and block context, respectively, are not destroyed when
    the method or block returns.

    Together these changes make it possible to use blocks even after the
    method containing their definition has returned.

2013-03-24  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * Externs.h (STInterpreterReturnException):
    * Externs.m (STInterpreterReturnException):
    * STCompiler.m (-compileStatements:blockFlag:):
    * STBytecodeInterpreter.m (-interpretMethod:forReceiver:arguments:
    	-returnValue:, -returnBlockValue:, -dispatchBytecode:):
    An explicit return statement in a block returns from the method
    context containing the block's definition. This is achieved by
    throwing a STInterpreterReturnException.

    * STBlock.m (-handler:): Don't let user code handle
    STInterpreterReturnException.

    * STBytecodeInterpreter.m (-interpret): Fix incorrect logging levels.

2013-03-23  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (-compileStatements:blockFlag:): Fix compiler bug: The
    value of a Smalltalk statement sequence is the value of its last
    statement and not that of the first.

2013-03-23  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.m (-initWithInterpreter:...):
    * STBlockContext.m (initWithInterpreter:initialIP:stackSize:):
    * STBytecodeInterpreter.m (-initWithEnvironment:):
    * STBytecodes.m (-initWithData:, -initWithCoder:):
    * STCompiledMethod.m (-initWihtSelector:argumentCount:bytecodeData:...)
    	-initWithCoder:):
    * STCompiledScript.m (-initWithVariableNames:):
    * STCompiler.m (-initWithEnvironment:, -init):
    * STCompilerUtils.m(STCMethod) (-initWithPattern:statements:):
    * STCompilerUtils.m(STCMessage) (-init):
    * STCompilerUtils.m(STCMessageExpression) (-initWithTarget:message:):
    * STCompilerUtils.m(STCPrimaryExpression) (-initWithObject:):
    * STCompilerUtils.m(STCPrimary) (-initWithType:object:):
    * STExecutionContext.m (-initWithStackSize:):
    * STLiterals.m(STObjectReferenceLiteral) (initWithObjectName:poolName:):
    * STLiterals.m(STBlockLiteral) (-initWithArgumentCount:):
    * STMessage.m (-initWithSelector:arguments:):
    * STMethodContext.m (-initWithMethod:environment:):
    * STSmalltalkScriptObject.m (-initWithEnvironment:compiledScript:):
    * STSourceReader.m (initWithString:range:):
    * STStack.m (-initWithSize:):
    Check the result of the super class initializer and assign it to
    self.

    * STBlock.m (-initWithInterpreter:..., -dealloc): Retain and release
    the homeContext and interpreter attributes.

    * STBytecodeInterpreter.m (-delloc): Release environment attribute to
    fix space leak.

    * STBytecodeInterpreter.m (createBlockWithArgumentCount:stackSize:):
    * STCompiledMethod.m (+methodWithCode:messagePattern:):
    * STCompilerUtils.m (+primaryWithVariable:, +primaryWithLiteral:,
    	+primaryWithBlock:, +primaryWithExpression:):
    Use idiomatic Objective-C code, which never assigns the result of an
    +alloc method to a local variable.

2013-03-02  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (_STNormalizeStringToken): Unescape two successive
    single quote characters inside literal string tokens.

2013-02-08  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBlock.h (value:,value:value:,value:value:value:,valueWithArguments:):
    * STBlock.m (value:,value:value:,value:value:value:,valueWithArguments:):
    Define standard Smalltalk methods for invoking blocks with arguments.

    * STBlock.m	(valueWith:,valueWith:with:,valueWith:with:with:,
    valueWith:with:with:with:,valueWithArgs:,handler:):
    * NSArray+additions.m (do:,select:,reject:,collect:,detect:):
    * NSNumber+additions.m (to:do:,to:step:do:):
    Use the new standard methods instead of the old non-standard ones.

2012-12-02  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (compileString:): Fix syntax error reporting to
    properly show the error context.

    * STCompiler.m (compileMethodFromSource:forReceiver:): Fix space leak
    when an exception other than a syntax error is raised.

    * STCompiler.m (compileStatements:): Autorelease compiled code here ...
    * STCompiler.m (compileMethod:): ... instead of here.

2012-10-26  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompilerUtils.m (STCPrimaryExpression): Remove repeated
    attribute declaration from the implementation.

2012-02-07  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (-lineNumberForIndex:): Fix unintended fall through
    in a switch statement detected by clang.

2012-02-07  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiledScript.m (-executedInEnvironment:):
    * STSmalltalkScriptObject.m (-forwardInvocation:):
    Fix potential space leak detected by clang.

2012-01-15  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiledScript.m (+initialize, -executeInEnvironment:): Rename
    finalize selector to shutDown to avoid conflict with the NSObject
    -finalize method.

2012-01-15  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (-indexOfTemporaryVariable, -indexOfNamedReference,
    -compilePrimary:, -compileExpression:): Minimal set of changes to
    accomodate to large NSNotFound value on 64-bit machines.

2012-01-15  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STCompiler.m (-exceptionInfo): Return exceptionInfo dictionary.

    * STCompiler.m (-compileMethodFromSource:forReceiver:, -compileString:,
    -indexOfNamedReference:): Remove unneeded variables reported by gcc 4.6.

2012-01-15  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBytecodes.h (-data, -length): Declare public methods.
    * STMethodContext.h: Remove declaration of unused methods, which were
    not implemented.

    * STCompiler.h (STCompiler, -compiledMethodFromSource:forReceiver:):
    * STCompiler.m (-compiledMethodFromSource:forReceiver:): STCompiler
    expects its receiver attribute to be a STScriptObject not just an
    object that satisfies the weaker STScriptObject protocol.

    * STSmalltalkScriptObject.m: Import NSDictionary and NSKeyValueCoding,
    whose methods are used in the implementation.

    * STCompiledMethod.h: Import definition of STMethod protocol instead
    of just declaring it. Gcc 4.6 complains if a protocol whose definition
    is not visible is used in an interface declaration.

2012-01-15  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STBytecodeInterpreter.m: Remove unnecessary include of Objective-C
    runtime header.

2011-01-20  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * SmalltalkInfo.plist: Add missing semicolons at end of plist
    dictionaries.

2011-01-20  Wolfgang Lux  <wolfgang.lux@gmail.com>

    * STSourceReader.m (-readNextToken): Fix bug where an incorrect token
    range was set for a string token that ends at the end of the input
    string.

2005 Aug 17 Stefan Urbanek

    * NSObject+additions: new file, new method ifNil:block
    
2005 June 24 Stefan Urbanek

    * STCompiler: Fixed STUndefinedKeyException name as it was fixed in -base
    
2005 June 20 Stefan Urbanek

    * Rewritten parts of STCompiler, STBytecodeInterpreter, STCompiled* and '
    ST*Context: Smalltalk now refers to instance variables by name not by index.
    This should allow creation of STActor class and final implementation of
    instance variables in STScriptObject. Instance variables are accessed
    by their name through Key-Value-Coding protocol.

2005 Mar 9 Stefan Urbanek

    * Patch by Matthew D Swank:  patch that keeps the temp space allocated to a 
    particular block, while avoiding naming conflicts by storing empty 
    strings as placeholders _after_ the block has been compiled (and the 
    names are no longer needed). 

2004 Nov 9 Stefan Urbanek

    * Remove STMethodSignatureForSelector as it was deprecated because of
    inportability to OSX.
    
2004 Nov 2 Stefan Urbanek

    * Changed super of STBytecodes from NSData to NSObject - there were some
    OSX issues

2004 Jul 10 Stefan Urbanek

    * Applied patch from Alexander V. Diemand (fixed bug #9595) - fixed
    maximum number of literals, fixed longjmp

2004 Jun 28 Stefan Urbanek

    * Fixed expresion duplicating.

2004 Jun 27 Stefan Urbanek

    * Version 0.8.1

2004 Jun 20 Stefan Urbanek

    * Added a fix to the compiler from Mateu Batle

2004 May 27 Stefan Urbanek

    * Fixed bug with signed/unsigned bytecode, which made StepTalk to crash if
      has more than 127 literals in the array. (patch by Mateu Batle)

2003 Sep 28 Stefan Urbanek <urbanek@host.sk>

    * NSNumber: fixed -NSNumber to:step:do: - now accepts negative step.
    (Patch by Alexander Diemand)

2003 Sep 24 Stefan Urbanek <urbanek@host.sk>
    
    * Guard compilation with an autorelease pool
    
2003 Sep 23 Stefan Urbanek <urbanek@host.sk>

    * STBytecodeInterpreter: fixed memory leak (reported by Alexander Diemand)

2003 Aug 5 Stefan Urbanek <urbanek@host.sk>

    * STScriptObject renamed to STSmalltalkScriptObject, because of steptalk
    core change.

2003 May 17 Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: treat decimal point followed by whitespace as '.' dot - 
    end of statement.

2003 May 9   Stefan Urbanek <urbanek@host.sk>

    * NSString+additions: added   

2003 May 4  Stefan Urbanek <urbanek@host.sk>

    * SmalltalkEngine: remove exception guard to allow debugging
    
2003 Apr 29 Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: fixed reading of identifiers at the end of source

2003 Apr 21 Stefan Urbanek <urbanek@host.sk>

    * Version 0.7.1

2003 Apr 6 Stefan Urbanek <urbanek@host.sk>

    * STCompiler: compileString: fixed exception reporting.

2003 Apr 04  David Ayers  <d.ayers@inode.at>

    * GNUmakefile: Added flags to show all warnings except for import.
    * STBlock.m: Initialzed variables to supress compiler warnings.
    * STCompiledMethod.m: Added needed import.
    * STCompiler.m: Added missing declaration.  Wrapped declarations only
    needed for DEBUG into #ifdefs to supress compiler warnings.
    Initialzed variables to supress compiler warnings.
    * STExecutionContext.m: Unified name for private categories.

2003 Mar 25  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: added missing [super dealloc]
    * STCompiledCode: do not retain bytecode data
    * STCompiler: various memory leak fixes
    * SmalltalkEngine: guard compilation exception and release the compiler

2003 Mar 23  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: added some end of string checks

2003 Feb 3  Stefan Urbanek <urbanek@host.sk>

    * Version 0.7.0
    
2003 Feb 3  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: fixed reading of a number terminated with '.', we treat
    it as an integer. Reader was complaining about i := 1.; fixed reading of
    var:=something. It was terating 'var:' as a selector keyword.

2003 Jan 30  Stefan Urbanek <urbanek@host.sk>

    * ChangeLog, STBlock.m, STBytecodes.h, 
    STBytecodes.m, STCompiledMethod.m, 
    STCompiler.h, STCompiler.m, STCompilerUtils.h, 
    STCompilerUtils.m, STExecutionContext.m, STGrammar.m, 
    STGrammar.y, STLiterals.h, STLiterals.m, 
    STMethodContext.h, STSourceReader.h, SmalltalkEngine.m: 
    Cleanup of compiler warnings
    
2002 Dec 25  Stefan Urbanek <urbanek@host.sk>

    * Version 0.6.2

2002 Dec 21  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader, STCompiler, STGrammar: Added real number parsing

2002 Sep 15  Stefan Urbanek <urbanek@host.sk>

    * Version 0.6.1

2002 Aug 30  Stefan Urbanek <urbanek@host.sk>

    * Code cleanup.

2002 Jun 14  Stefan Urbanek <urbanek@host.sk>

    * STMethodContext: Raise exception on invalid reference, not on undefined 
    object
    
2002 Jun 13  Stefan Urbanek <urbanek@host.sk>

    * STCompiledMethod: Removed unused methods
    * STBytecodeInterpreter: rewritten context handling; removed unused methods
    * STBlockContext: rewritten context handling; cleaned exception handler
    * STGrammar.y: fixed empty arrays #()
    * STExecutionContext: removed parent context as it is longer used
    
2002 Jun 7  Stefan Urbanek <urbanek@host.sk>

    * STBytecodeInterpreter: fixed debug-log bug
    
2002 Jun 6  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: fixed bug in reading number token type and binary
    selectors beginning with the '-' character.
    * Moved NSObject-additions to the StepTalk sources

2002 May 29  Stefan Urbanek <urbanek@host.sk>

    * STCompiledScript: assign return value on executing single-method script

2002 May 15  Stefan Urbanek <urbanek@host.sk>

    * STCompiler, Externs, STGrammar: fixed undefined exceptions (reported by 
       Björn Gohla <b.gohla@gmx.de>)
    
2002 Mar 17  Stefan Urbanek <urbanek@host.sk>

    * STCompiler, STGrammar: changed grammar to be able to have "methods" or
      "just statements" in source

2002 Feb 14  Stefan Urbanek <urbanek@host.sk>

    * STSourceReader: Retain character sets

2002 Feb 5  Stefan Urbanek <urbanek@host.sk>
    
    * STSelector+additions.[hm]: new files
    * STCompiler: use STSelector class for symbol literals

2002 Feb 3  Stefan Urbanek <urbanek@host.sk>
    
    * STScriptObject: handle special method 'exit'
    * STBytecodeInterpreter: added code to halt the interpreter and return from 
      all contexts
    
2002 Jan 31  Stefan Urbanek <urbanek@host.sk>

    * STBlock: small speed improvements 
    * STBlockContext: removed evaluateWithArguments:count:, and moved code 
      into STBLock

2002 Jan 23  Stefan Urbanek <urbanek@host.sk>

    * NSNumber+additions: moved arithmetic code to the library
        
2002 Jan 22  Stefan Urbanek <urbanek@host.sk>

    * STCompiler: create one more duplicate of stack top when assigning to a
      variable.

2002 Jan 9  Stefan Urbanek <urbanek@host.sk>

    * SmalltalkEngine: implemented executeScript:inEnvironment:

2001 Dec 8  Stefan Urbanek <urbanek@host.sk>

    * Fixed temporary variable compilation
    * Added special handling of nil, YES and NO constants; added corresponding 
      bytecodes
    
2001 Dec 8  Stefan Urbanek <urbanek@host.sk>

    * CahgeLog started
    
