This release has quite a few changes.
- The internal collection change propagation mechanism has changed. Internally only single item changes are handled.
- IEnumerables that are results of Obtics transformation methods generally no longer support INotifyPropertyChanged. Only the results of ObservableEnumerable.ToList() and ObservableEnumerable.Cap(), both of which return IList objects and therefore have actually changing properties, support INotifyPropertyChanged.
- ObservableEnumerable sorting methods no longer do a stable sort. That means that the original element order is no longer the final sorting criterium. Elements with an equal sorting key will appear in a random order in the result sequence.
- Internally Obtics can use unordered sequences. It can do this when the final result does not depend on the original ordering of source sequence elements. Unordered sequences carry a lot less information (no index information) and are therefore a lot cheaper in resources. When creating complex queries on long source sequences, try to sort the end result for a performance boost. Equality comparison and hashing are very important for unordered sequences. Make sure all elements of your source sequences implement these properly.
- ObticsRaytracer example has been optimized. Scene changes are processed much faster.
When downloading the binaries and running test.exe; the following parameters can be passed:
one or more of the numbers from 0 to 6 and 10 to 23
specifying a different test query.
test.exe 0 2 3
Check out source code for details.