|
Adobe Source Libraries 2.0.0
A collection of C++ libraries.
|
This release is labeled 2.0.0, because going forward I'm going to be trying to adhere to semantic versioning and this release (like most others) contains some breaking changes.
ASL and the STLab libraries are no longer research projects or experiments. Going forward my goals are:
Despite being minimally maintained, these libraries still see significant use. My goal is to find new maintainers. My ongoing research has moved on from C++ and maintaining these libraries is now an evening project.
After over 15 years of stale documentation, with the help of Cursor and Claude I was able to get the docs building again and cleaned so they are in a usable form and can now be found at [stlab/github.com/adobe_source_libraries]. There is still a lot of work to clean out old cruft, document some undocumented items, and improve the structure, but now that work can happen incrementally. A couple of the libraries where migrated to the stlab libraries but not removed from ASL. I started the work to consolidate these and move the copy-on-write library into a standalone library. Check the release notes for more details.
Sean
This release is source only, no binary packages and no net setup scripts.
I've recently returned to Adobe as architect for mobile imaging applications. The Software Technology Lab remains a "virtual group." We have a collection of improvements, fixes, updates, and additions that we've gathered over the last year and a half since the last release. We are working to simplify the release process to something more manageable and to get back to more frequent releases. That is why we've dropped the binary distribution and net setup scripts. Suggestions for further simplification welcome.
A huge thanks to Foster and Mat who have continued to contribute to the libraries. Thanks much for your continued support!
Sean
Highlights of this release include: ASL:
logic: relate { x, y <== [a, b]; a, b <== [x, y];
The rhs value must be an array with the same arity as the number of cells named on the left. A cell can appear more than once on the left so long as the term can be uniquely selected.
User supported libs (APL):
Highlights of this release include:
Highlights of this release include:
ASL:
- Property model library (Adam) - rewrote main solver
- no longer uses exceptions as flow control.
- fixed bug with initializers that refer to cells with
define_expressions has causing the define_expressions to evaluate
which could refer to cells which had not been declared.
- exported get() member, it is now the client responsibility to wire
sheet_t::get() to the variable lookup in the VM (this also allows the
clients to hook the variable lookup for supporting custom variables).
In the future the VM will be separated entirely from the property
model library.
- added some more error reporting including reporting duplicate cell
names.
- virtual machine library
- removed the contributing buts which were tracked through
calculations. The VM stack is now just a stack of any_regular_t.
- removed the use of storing size_t in an any_regular_t in the VM
(was breaking serialization among other things because size_t is not a
C++ basic type on Win64).
- any_regular_t
- improved serialization by removing one heap alloc/dealloc per item
serialized, also uses logN search for type instead of linear search.
- removed the hack to handle size_t serialization on Win64.
- serialization will now throw an exception when it encounters a
type other than one of the 7 CEL types (it used to assert).
- in debug builds, the version field of the any_regular_t vtable
contains a short type name for debugging purposes only.
See the <a href='http://stlab.adobe.com/wiki/index.php/Debugging_any_regular_t_and_short_names'>
wiki documentation.</a>
I have left Adobe and will be pursuing other opportunities. This release is my first as an "external" open source contributor. Please use my mmarcus <at> emarcus <dot> org address instead of my former adobe.com address.
Mat
Highlights of this release include:
ASL:
- The pmeval (property model evaluator) interpreter is ready
for general purpose use. It has been enhanced to allow
flexible exploration and testing of property models.
Commands include check assertions, print statements, update,
reinitialize, and property model dumps (showing enablement,
contributing/intent). pmeval can be built from source (all
platforms, including cygwinand *N*X) or downloaded from
sourceforge for Mac or Windows.
- Property models can also be evaluated via an experimental
web form-based interface to pmeval. The service, along with
an intermediate property modeling tutorial is available
through http://emarcus.org/#pmeval .
- Rewrote enablement for the property model engine. Enabled
status is set to a conservative approximation of enablement
detection (erring towards enablement): it is set to false if
a change to the cell cannot affect the output of a correct
sheet, and true if it *may* effect the output.
- Replaced monitor_active with monitor_enabled (conservative
enablement, touch_set support). See the documentation for
monitor_enabled in adam.hpp, and the calls to
monitor_enabled in (APL's) widget_factory.hpp for details.
(Note that it is incorrect to unconditionally pass NULLs to
monitor_enabled. The bug will manifest as incorrect
enablement behavior in the presence of touch sets in eve
sheets.)
- Fixed bug where interface cells appearing in a when clause
condition were not contributing.
- New papers and presentations at
http://stlab.adobe.com/wiki/index.php/Papers_and_Presentations
- Patched boost to allow preservation of test targets (now the
default).
- Patched to serializes std::size_t on MSVC when compiling for
64 bit architecture.
- Added qualification to binary_search algorithm to remove
ambiguity.
- Refactored pmeval, introduced (test-only) queryable_sheet_t.
pmeval now supports multiple input files, sheet separate
from commands, multiple simultaneous sheets.
- Allow monitoring of invariants under monitor_value.
- Improved release notes and build scripts for *N*X/cygwin
User supported libs (APL):
- Updated widget factory so that widgets monitor_considered
instead of monitor_active, to properly enable in presence of
touch sets.
- Fixed reveal widget bug
- Update so that both stlab and internal adobe frameworks can
leverage widget_factory.hpp; also rolled in updates from
other teams within adobe