There was a wrong constant in the win32.pli Win32 API glue. As a result any attempt to read an inexisting file would create it.
It had terrific side effects such as making impossible to service a .html file through the HTTP server because the HTTP server would create an empty .page file !
Added 'public' option to the HTTP and FTP servers for simpler startup.
Restricted the default access rights in order to avoid people to publish something they don't expect to.
Global variables are now declared using 'gvar' instead of 'var'.
Added 'default_value' field (not used yet) in the functions prototypes.
Added 'name' 'default_value' and 'option' parameters to the 'define_argument' method for 'Function' data type.
Removed 'define_arg' and 'terminate_args' methods for 'Function' data type, because they had two names. The kept names are 'define_argument' and 'terminate_arguments'.
Added 'options' parameter to the 'define_field' method for 'Type' data type.
Cleaned the fields access function (was named 'address and translate Universal' and is now named 'translate Universal').
Added 'atomic_' functions prototypes in startup.c
Corrected file handling functions in
file.pli
The poor serial ports stream interface is back in.
Corrected the buggy 'this_module' function.
Corrected the the 'list' function for the Win32 native file system.
Corrected the the 'flush' function for the Win32 TCP file system.
Renamed '/pliant/language/parser/code_generator.pli' to '/pliant/language/parser/position.pli'
Merged '/pliant/admin/filesystem.pli' to '/pliant/linux/disk.pli'
Revisited the strings special characters encoding/decoding implementation in
str.pli
Added the 'console_dump' function for Win32 (their shell has no scrolling capabilities, so when you get an error, you often could not read all the error report). Now, you'll also find the report in C:\temp\console (if running at debugging level 2 or higher).
A bit of cleanup and improvements in the
C part of the optimizer and code generator
.
The debugging informations where not recorded properly in release 27
The 'to string' and 'from string' generic functions are now defined in
string.pli
The syntax of 'match' has been changed accordingly, so it as been renamed to '
parse
'
Casting an integer to a string is no more possible; use the new '
string
' instruction instead
the PDEE files have all been
moved around
in order to adopt a tree that will allow tight integration of the programs and the documentation in the future. As a result, most Pliant module names have changed.
The special characters encoding in strings has changed:
character
old encoding
new encoding
"
["]
[dq]
[
[[]
[lb]
]
[]]
[rb]
The .page file format has been revisited for more consistency:
'items' and 'cells' keywords have been removed
'bold' 'italic' and friends don't accept a string parameter instead of a bloc any more
introduced
[
blablabla
]
has a shortcuts for
text "
blablabla
"
The license is now GNU general public license version 2 and nothing else. In previous releases, you could read 'This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version'. This is not very wise because noone can predict what future releases of GNU general public license could contain, so from now on, Pliant rely on GNU general public license version 2 only. If a future version of GNU general public license introduces something that I find worthy, then I'll upgrade, but I want to see the text before.
Added exclusive modules (when you include an exclusive module, all previously included modules are droped).
Added direct support for initial field values in new types definition.
Added the declaration of 'set_generic_method' and 'get_generic_method' in startup.c
Added some comments to the code (the idea came from Gordon to mixed code and documentation)
Replaced 'chunk_is_decomitted' by 'chunk_is_committed', and changed it's value so that the bit 0 of the integer before any allocated area be always 1. This is needed in order to decide if the entry header is a short or a long one.
Negative floating point numbers where not recognized by 'match'.
Changed 'terminate_zombies' so that Linux processes that failed to be waited for are reinserted in the zombies list instead of becoming lost zombies. My understanding of the man page is that it's a Linux bug. Anyway, it could lead to a slow processes starvation due to more and more zombies.
Renamed all .p files as .pli in order to satisfy Debian naming rules (requested by Gordon Matzigkeit on the forum)
Added the 'Index' data type.
Added one parameter to the 'next' method for Dictionary and Module data types in order to be consistent with the new Index data type.
Changed the 'process_kill' options in module /pliant/admin/process.pli
The SMTP server is now a nice one with strong forwarding capabilities.
Added 'process_id' in module /pliant/admin/process.pli
Added 'file_clone' in module /pliant/admin/file.pli (it means create a hard link) whereas 'file_link' means create a soft link.
In accounting definitions, a domain can now contain several ip areas.
Added the 'Index' data type.
there is a now a
Posix version
that should work with any i386 Unix variants.
The
Win32 version is now usable
The type for 'backtracking' field in 'Expression' data type was wrong in startup.c
Added the 'possible_registers' field the 'Argument' type.
Added code generator hooks.
Changed execution hook from a single one to a list of hooks.
Disabled the timers feature from the C part of Pliant: the low level compiling mechanism is now known to consume only a bit more time that the high level compiling mechanism, so we cannot (without heavy studies) improve the overall compiling performances significantly (compile twice faster). The price we pay is the one of the Pliant power.
Disabled the low level code listing feature from the C part of Pliant: we will use the enhanced one provided in the PDEE.
Corrected the generic methods call in GCC interface. More precisely, removed the address translation when finding a 'call' instruction the 'as' listing with a '%' sign (which means the address of the function is not immediat).
Removed an incorrect semaphore handling in the HTTP server.
Now use movsx and movsz in order to cast form 'Int8' and 'uInt8' to 'Int' and 'uInt'. (it was announced in release 24, but was missing from the released code)
Added various other inline usages of 'movsx' 'movzx' and 'mov' in order to optimize 'Int8' 'uInt8' 'Int16' 'uInt16' and 'Char' data types.
Moved the 'kill_all_threads' function after displaying the error message context in order to avoid error messages as short and unhelpful as 'expection 11' with no extra information.
Added stack overflow checking when the program is running at debugging level 2 or more.
Added floating point 'abs' and '^' to the GCC interface.
The constants compile time evaluation (in /pliant/module/pliant/optimizer/consteval.p) was too aggressive (R11 bug was back). Changed to a more conservative version that does not evaluate expressions where one of the instructions returns a pointer.
Corrected the 'file' option in the 'smtp_send' instruction.
Corrected typo in month and day of week names (thanks to Thomas Bakketun).
Corrected the 'abs' function code op for the 'Float' data type.
Removed the stupid assertion checking in casting between Float and Float32 code generation.
Corrected the forum mailing list subscription function (the name of the smtp server to use was missing while sending the welcome message).
Added .xor. operator.
Now use movsx and movsz in order to cast form 'Int8' and 'uInt8' to 'Int' and 'uInt'.
Added some inline instructions and optimizations to the gcc interface.
The gcc interface output is now human readable (very instructive in order to understand Pliant low level compiling mechanism)
Improved method for automatically finding a free port for the documentation server.
The new smtp_send instruction was completely buggy. As a result, the mailing list was not working any more.
The handling of the unary '-' was not good at parser level.
Corrected the /pliant/doc-server/ script.
the uInt '-' uInt -> uInt function was buggy because error checking was done through testing overflow instead of carry flag.
added a special case to avoid error in case of uInt '-' uInt when both operands are constants.
Improved smtp_send instruction.
Compile errors position report is now more accurate (once more). This was accomplished through adding method 'might_compile_as' to the Expression data type which is roughly the same as 'compile_as' but will not record any error message in case of failure.
More powerfull command line options (added the 'precompile' option, and the ability to use options in the first line of an executable file)
Compile errors position report is now more accurate
Added SMTP client, SMTP server, POP3 client and POP3 server. As a result, Pliant now contains a mail server, and Pliant programs can very easily send or retrieve messages from any mail server.
The accounting mechanism now uses a Pliant program to fill the accounts database rather than a static file.
The accounting mechanism has been refined (better handling of multiple definitions and access rights levels).
The documentation server launching script is now more powerfull: it will scan TCP ports until it finds a free one and will launch Netscape automatically