This release introduces many major fixes, including a fix for the recently discovered "Double Removals" bug (1039974), which probably has been the worst bug since the project has been made publicly available. The code has been reviewed as much as possible before submitting the 1.0_05 release, however there will probably be other bugs around - only more thorough tests will help hunting them. Also, this release introduces a feature that could be handy to extend the underlying CLIPS engine behaviour, that is, the possibility to execute Python code from within CLIPS. The details about this are in the new version of the manual.... read more
I have discovered a significantly nasty bug in current PyCLIPS implementation, and since the bug is in the low-level submodule, it can lead to unexpected segmentation faults. It takes place when the code using PyCLIPS tries to remove an entity twice: please read
for an example.
The bug appears when an entity is removed for the second time using the shadow-class method Remove(): current CLIPS implementation assumes that if you directly remove a construct from the system, the construct has to actually be present in it, thus calling the associated removal function without checking. Since the first destruction of an entity can take place both via Remove() and via a command directly sent to the engine (using Eval(), SendCommand() or even Run() if it implies any undef<construct> command), preventing such a situation without scanning the entire construct list is quite difficult. The current idea is to perform such a scan every time the user tries to delete a construct: this could make construct deletion significantly slower in case there is a large amount of these.... read more
The new release features many enhancements and fixes, as well as some code cleanup. Some of these enhancements allow the use of PyCLIPS as a CLIPS interactive shell. All users are adviced to switch to the new release: it has to be considered more stable and complete... However this release introduces some changes that can lead to code breakage (in very rare case, I think): that is why the 1.0_03 release is still present in the download area.
This release falls back to Python implicit thread handling: this can cause more latency when complex rule systems are run; however it is probably safer to use this release (even in single-threaded applications) than previous ones. This release also adds a 'Relation' property to Fact objects in order to retrieve the Fact relation (that is the deftemplate name, also in case of implicit templates for ordered facts).
The new release features a basic locking for the CLIPS engine: now intrusive operations lock the Python interpreter in order to allow safety in multithreading environments. However this does not ensure that accessed objects are in a coherent state: while a thread writes to the engine other threads may retrieve inconsistent information.
Also, there has been a thorough revision of the documentation (by an english person!) who found many errors and imprecisions.
There is a new PyCLIPS file release, named 1.0_01: it includes all fixes that are in current CVS, while remaining totally compatible with the previous release. There are also some minor enhancements and solutions to annoyances. The preliminary documentation has been corrected as well accordingly to current changes and enhancements.
I have corrected some serious bugs that appeared in the C submodule of PyCLIPS. Going towards version 1.1 (which will be marked as "Stable", but I think we are still far from that goal), a 1.0_01 package will be soon released and the bugs found until today will be closed.
The 1.0_01 packages will contain fixes in all components, that is the low-level submodule, the high-level interface and related documentation.
I added a CVS tree to the PyCLIPS project: in this tree changes to source files will be posted of course more frequently than within file releases. However, at least for now, I will only post changes that I consider somewhat "stable" (for instance bug fixes), at least until someone joins the project.
The CVS "module" name for the Python module (I also plan to add examples once I'm ready with them) is, in a complete lack of fantasy, pyclips_module.... read more
Just after posting the 1.0 series, I corrected a typo that might have caused severe errors. The 1.0 packages have been replaced with the corrected version.