Project

General

Profile

Release Notes » History » Version 95

Kyle Knoepfel, 12/16/2020 10:50 AM

1 1 Lynn Garren
h1. Release Notes
2 1 Lynn Garren
3 46 Kyle Knoepfel
These notes are intended to serve as a guide to the user-visible features in a particular _art_ suite release. As such, only versions included in _art_ suite releases, or those with substantive changes, are included.
4 46 Kyle Knoepfel
5 92 Kyle Knoepfel
h2(#31002). canvas version:"3.10.02" (2020/08/28)
6 92 Kyle Knoepfel
7 92 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30603|3.06.03]]
8 95 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.04.03]], [[critic:Release Notes|2.05.00]], [[critic:Release Notes|2.05.01]]
9 95 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11502|1.15.02]], [[gallery:Release Notes 11600|1.16.00]], [[gallery:Release Notes 11601|1.16.01]]
10 92 Kyle Knoepfel
11 91 Kyle Knoepfel
h2(#31001). canvas version:"3.10.01" (2020/07/24)
12 91 Kyle Knoepfel
13 91 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30602|3.06.02]]
14 91 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.04.02]]
15 91 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11501|1.15.01]]
16 91 Kyle Knoepfel
17 88 Kyle Knoepfel
h2(#31000). canvas version:"3.10.00" (2020/07/07)
18 88 Kyle Knoepfel
19 90 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30600|3.06.00]], [[art:Release Notes 30601|3.06.01]]
20 90 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.04.00]], [[critic:Release Notes|2.04.01]]
21 88 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11500|1.15.00]]
22 88 Kyle Knoepfel
23 89 Kyle Knoepfel
This version only supports Python 3 and SLF7.  The @e20@ qualifier (GCC 9.3 with C++17 enabled) has been added.
24 88 Kyle Knoepfel
25 94 Kyle Knoepfel
h2(#30902). canvas version:"3.09.02" (2020/11/13)
26 94 Kyle Knoepfel
27 94 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30502|3.05.02]]
28 94 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.03.03]]
29 94 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11404|1.14.04]]
30 94 Kyle Knoepfel
31 86 Kyle Knoepfel
h2(#30901). canvas version:"3.09.01" (2020/03/02)
32 86 Kyle Knoepfel
33 87 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30500|3.05.00]], [[art:Release Notes 30501|3.05.01]]
34 93 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.03.00]], [[critic:Release Notes|2.03.01]], [[critic:Release Notes|2.03.02]]
35 93 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11402|1.14.02]], [[gallery:Release Notes 11403|1.14.03]]
36 86 Kyle Knoepfel
37 82 Kyle Knoepfel
h2(#30900). canvas version:"3.09.00" (2019/11/12)
38 82 Kyle Knoepfel
39 82 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30400|3.04.00]]
40 85 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes|2.02.00]], [[critic:Release Notes|2.02.01]]
41 85 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11400|1.14.00]], [[gallery:Release Notes 11401|1.14.01]]
42 82 Kyle Knoepfel
43 83 Kyle Knoepfel
This version includes the following new features:
44 83 Kyle Knoepfel
45 83 Kyle Knoepfel
* The ability to create associative containers using the @art::InputTag@ key type (resolves issue #23320).
46 83 Kyle Knoepfel
* The @art::Assns::addMany@ overload set, which can be used for easily creating one-to-many associations.
47 82 Kyle Knoepfel
48 84 Kyle Knoepfel
This version only supports qualifiers @e19@ and @c7@.  In addition, Python 3 is enabled by default.  To use Python 2, the @'py2'@ qualifier must be specified when setting up the @canvas@ UPS product.
49 84 Kyle Knoepfel
50 74 Kyle Knoepfel
h2(#30800). canvas version:"3.08.00" (2019/06/21)
51 74 Kyle Knoepfel
52 77 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30300|3.03.00]], [[art:Release Notes 30301|3.03.01]]
53 81 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20100|2.01.00]], [[critic:Release Notes#20102|2.01.02]], [[critic:Release Notes#20103|2.01.03]], [[critic:Release Notes#20104|2.01.04]]
54 81 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11300|1.13.00]], [[gallery:Release Notes 11301|1.13.01]]
55 77 Kyle Knoepfel
56 74 Kyle Knoepfel
57 76 Kyle Knoepfel
Smart-query objects constructed with an @art::ProductToken@ now ensure C++ type consistency (resolves issue #20579).
58 76 Kyle Knoepfel
59 70 Kyle Knoepfel
h2(#30704). canvas version:"3.07.04" (2019/05/29)
60 70 Kyle Knoepfel
61 80 Kyle Knoepfel
*  _art_ suites: [[art:Release Notes 30206|3.02.06]]
62 80 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20006|2.00.06]], [[critic:Release Notes#20007|2.00.07]], [[critic:Release Notes#20009|2.00.09]], [[critic:Release Notes#20010|2.00.10]]
63 80 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11204|1.12.04]], [[gallery:Release Notes 11206|1.12.06]], [[gallery:Release Notes 11207|1.12.07]]
64 70 Kyle Knoepfel
65 72 Kyle Knoepfel
The @setPtr@ and @getElementAddresses@ customization points for @art::Ptr@ were unintentionally disabled for _art_ 3.  These have been restored with this version of @canvas@ (resolves issue #22643).
66 72 Kyle Knoepfel
67 66 Kyle Knoepfel
h2(#30703). canvas version:"3.07.03" (2019/03/07)
68 69 Kyle Knoepfel
69 69 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30203|3.02.03]], [[art:Release Notes 30204|3.02.04]], [[art:Release Notes 30205|3.02.05]]
70 67 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20003|2.00.03]], [[critic:Release Notes#20004|2.00.04]], [[critic:Release Notes#20005|2.00.05]]
71 68 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11203|1.12.03]]
72 66 Kyle Knoepfel
73 65 Kyle Knoepfel
h2(#30702). canvas version:"3.07.02" (2019/03/05)
74 65 Kyle Knoepfel
75 65 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30202|3.02.02]]
76 67 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20002|2.00.02]]
77 65 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11202|1.12.02]]
78 65 Kyle Knoepfel
79 65 Kyle Knoepfel
80 64 Kyle Knoepfel
h2(#30701). canvas version:"3.07.01" (2019/02/07)
81 1 Lynn Garren
82 64 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30201|3.02.01]]
83 64 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20001|2.00.01]]
84 64 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11201|1.12.01]]
85 64 Kyle Knoepfel
86 64 Kyle Knoepfel
h2(#30700). canvas version:"3.07.00" (2019/01/30)
87 64 Kyle Knoepfel
88 64 Kyle Knoepfel
* _art_ suites: [[art:Release Notes 30200|3.02.00]]
89 64 Kyle Knoepfel
* _critic_ suites: [[critic:Release Notes#20000|2.00.00]]
90 64 Kyle Knoepfel
* _gallery_ suites: [[gallery:Release Notes 11200|1.12.00]]
91 64 Kyle Knoepfel
92 64 Kyle Knoepfel
93 64 Kyle Knoepfel
----
94 60 Kyle Knoepfel
95 63 Kyle Knoepfel
h2. %(#30501)canvas% version:"3.05.01", 2019/01/29 ([[art:Release Notes 3.01.01|art suite 3.01.01]], [[art:Release Notes 3.01.02|art suite 3.01.02]])
96 60 Kyle Knoepfel
97 54 Kyle Knoepfel
h2. %(#30500)canvas% version:"3.05.00", 2018/09/25 ([[art:Release Notes 3.01.00|art suite 3.01.00]])
98 54 Kyle Knoepfel
99 55 Kyle Knoepfel
* C++17 only
100 55 Kyle Knoepfel
101 48 Kyle Knoepfel
h2. %(#30400)canvas% version:"3.04.00", 2018/06/05 ([[art:Release Notes 3.00.00|art suite 3.00.00]])
102 48 Kyle Knoepfel
103 52 Kyle Knoepfel
{{collapse(New features)
104 49 Kyle Knoepfel
* A helper facility for looping over each @art::BranchType@ value has been added:
105 49 Kyle Knoepfel
<pre><code class="cpp">
106 50 Kyle Knoepfel
art::for_each_branch_type([](art::BranchType const bt) { std::cout << bt << '\n'; });
107 1 Lynn Garren
</code></pre>
108 1 Lynn Garren
* The ability to debug TBB task execution within _art_ can be enabled by the user specifying the environment variable @ART_DEBUG_TASKS=<NUM>@, where the value of @<NUM>@ is an integer threshold.
109 1 Lynn Garren
110 52 Kyle Knoepfel
----
111 1 Lynn Garren
112 52 Kyle Knoepfel
}}
113 52 Kyle Knoepfel
114 52 Kyle Knoepfel
{{collapse(Breaking changes)
115 49 Kyle Knoepfel
{{include(30400 breaking changes)}}
116 52 Kyle Knoepfel
}}
117 49 Kyle Knoepfel
118 58 Kyle Knoepfel
----
119 58 Kyle Knoepfel
120 73 Kyle Knoepfel
h2. %(#30601)canvas% version:"3.06.01", 2019/06/07 ([[art:Release Notes 2.13.00|art suite 2.13.00]])
121 73 Kyle Knoepfel
122 73 Kyle Knoepfel
h2. %(#30600)canvas% version:"3.06.00", 2019/01/22 ([[art:Release Notes 2.12.00|art suite 2.12.00]], [[art:Release Notes 2.12.01|art suite 2.12.01]])
123 59 Kyle Knoepfel
124 58 Kyle Knoepfel
h2. %(#30304)canvas% version:"3.03.04", 2018/11/19 ([[art:Release Notes 2.11.05|art suite 2.11.05]])
125 58 Kyle Knoepfel
126 57 Kyle Knoepfel
h2. %(#30303)canvas% version:"3.03.03", 2018/07/16 ([[art:Release Notes 2.11.03|art suite 2.11.03]], [[art:Release Notes 2.11.04|art suite 2.11.04]])
127 53 Kyle Knoepfel
128 47 Kyle Knoepfel
h2. %(#30302)canvas% version:"3.03.02", 2018/05/04 ([[art:Release Notes 2.11.02|art suite 2.11.02]])
129 47 Kyle Knoepfel
130 42 Kyle Knoepfel
h2. %(#30301)canvas% version:"3.03.01", 2018/04/02 ([[art:Release Notes 2.11.01|art suite 2.11.01]])
131 42 Kyle Knoepfel
132 41 Kyle Knoepfel
h2. %(#30300)canvas% version:"3.03.00", 2018/03/30 ([[art:Release Notes 2.11.00|art suite 2.11.00]])
133 41 Kyle Knoepfel
134 44 Kyle Knoepfel
* This version supports GCC 7.3 with C++17 enabled.
135 43 Kyle Knoepfel
* In past versions of project:canvas, @RangeSet@ representations for a full run, and for a completely empty run have been the same under the assumption that it is not possible to create a completely empty run.  Although this assumption is correct for all newly created products/runs in versions of _art_ that support the concept of a @RangeSet@, it is incorrect when reading files that do not have @RangeSet@ information.  To be able to disambiguate between empty range sets and full-run range sets, we have changed the representation of the full-run @RangeSet@ (resolves bug #18996).
136 45 Kyle Knoepfel
* During the dereferencing of an @art::Ptr<T>@, a check is made that the @art::Ptr@ index is valid.  This happens during the first dereference of the product for a given event (or subrun/run).  Subsequent dereferences incur no additional run-time overhead. (Resolves issue #18849.)
137 43 Kyle Knoepfel
138 43 Kyle Knoepfel
To support the above changes, two breaking changes were added:
139 43 Kyle Knoepfel
140 43 Kyle Knoepfel
{{include(30300 breaking changes)}}
141 43 Kyle Knoepfel
142 40 Kyle Knoepfel
h2. %(#30203)canvas% version:"3.02.03", 2018/03/16 ([[art:Release Notes 2.10.04|art suite 2.10.04]])
143 40 Kyle Knoepfel
144 39 Kyle Knoepfel
h2. %(#30202)canvas% version:"3.02.02", 2018/02/15 ([[art:Release Notes 2.10.02|art suite 2.10.02]], [[art:Release Notes 2.10.03|art suite 2.10.03]])
145 38 Kyle Knoepfel
146 38 Kyle Knoepfel
* Change the fluffing of the @wrappedName_@ transient data member of @BranchDescription@ to the @BranchDescription@ constructor (resolves bug #18925).
147 38 Kyle Knoepfel
148 36 Kyle Knoepfel
h2. %(#30201)canvas% version:"3.02.01", 2018/01/23 ([[art:Release Notes 2.10.01|art suite 2.10.01]])
149 36 Kyle Knoepfel
150 36 Kyle Knoepfel
h2. %(#30200)canvas% version:"3.02.00", 2018/01/22 ([[art:Release Notes 2.10.00|art suite 2.10.00]])
151 36 Kyle Knoepfel
152 37 Kyle Knoepfel
* Add @AssnsAlgorithms.h@, which provides means of grouping @Assns@ elements based on the "left" element values of an @Assns<L,R(,D)>@ object.
153 37 Kyle Knoepfel
* Support Clang 5.0.1; involves introducing a dependency on ROOT for @c2@ builds.
154 37 Kyle Knoepfel
* Introduce dependency on the header-only @range@ library.
155 37 Kyle Knoepfel
* Provide specialization for @std::hash<art::Ptr<T>>@ (resolves issue #18655).
156 37 Kyle Knoepfel
157 35 Kyle Knoepfel
h2. %(#30103)canvas% version:"3.01.03", 2017/12/06 ([[art:Release Notes 2.09.03|art suite 2.09.03]], [[art:Release Notes 2.09.04|art suite 2.09.04]], [[art:Release Notes 2.09.05|art suite 2.09.05]], [[art:Release Notes 2.09.06|art suite 2.09.06]])
158 33 Kyle Knoepfel
%(#10502)canvas% version:"1.05.02", 2017/12/04 ([[art:Release Notes 2.05.01|art suite 2.05.01]])
159 31 Kyle Knoepfel
160 31 Kyle Knoepfel
* Fix empty @RangeSet@ handling
161 31 Kyle Knoepfel
162 32 Kyle Knoepfel
h2. %(#30101)canvas% version:"3.01.01", 2017/11/07 ([[art:Release Notes 2.09.02|art suite 2.09.02]])
163 32 Kyle Knoepfel
164 29 Kyle Knoepfel
h2. %(#30100)canvas% version:"3.01.00", 2017/10/17 ([[art:Release Notes 2.09.00|art suite 2.09.00]], [[art:Release Notes 2.09.01|art suite 2.09.01]]).
165 29 Kyle Knoepfel
166 30 Kyle Knoepfel
h2. %(#30003)canvas% version:"3.00.03", 2017/10/20 ([[art:Release Notes 2.08.04|art suite 2.08.04]]).
167 30 Kyle Knoepfel
168 30 Kyle Knoepfel
* Fix schema evolution rules implemented in @ProductIDStreamer@ (resolves bug #17898).
169 28 Kyle Knoepfel
170 27 Kyle Knoepfel
h2. %(#30002)canvas% version:"3.00.02", 2017/08/30 ([[art:Release Notes 2.08.03|art suite 2.08.03]]).
171 25 Kyle Knoepfel
172 26 Kyle Knoepfel
* Fix stale reference error in @IPRHelper@, introduced by using @art::detail::input_tag@ (resolves bug #17609).
173 26 Kyle Knoepfel
174 27 Kyle Knoepfel
h2. %(#30001)canvas% version:"3.00.01", 2017/08/04 ([[art:Release Notes 2.08.02|art suite 2.08.02]]).
175 25 Kyle Knoepfel
176 26 Kyle Knoepfel
* Upgrade to ROOT 6.10.04d.
177 26 Kyle Knoepfel
178 27 Kyle Knoepfel
h2. %(#30000)canvas% version:"3.00.00", 2017/08/01 ([[art:Release Notes 2.08.00|art suite 2.08.00]], [[art:Release Notes 2.08.01|art suite 2.08.01]]).
179 21 Kyle Knoepfel
180 23 Kyle Knoepfel
{{include(30000 breaking changes)}}
181 21 Kyle Knoepfel
182 27 Kyle Knoepfel
h2. %(#20002)canvas% version:2.00.02, 2017/05/26 ([[art:Release Notes 2.07.03|art suite 2.07.03]]).
183 19 Kyle Knoepfel
184 27 Kyle Knoepfel
h2. %(#20001)canvas% version:2.00.01, 2017/05/25 ([[art:Release Notes 2.07.01|art suite 2.07.01]], [[art:Release Notes 2.07.02|art suite 2.07.02]]).
185 18 Kyle Knoepfel
186 20 Kyle Knoepfel
* Added the @art::EventIDMatcher@ class, which allows for selection of @EventID@<notextile></notextile>s based on a set of patterns.
187 20 Kyle Knoepfel
* Added a forward iterator to the @art::Assns<A,B,D>@ class template to allow iteration over the collection.
188 20 Kyle Knoepfel
* @art::thread_safe_registry_via_id@ container added to support concurrent insertion of elements.
189 20 Kyle Knoepfel
* Improved exception message in the case of a failure to merge @RangeSet@<notextile></notextile>.
190 20 Kyle Knoepfel
* Significant compile-time improvements to @art::Timestamp@.
191 20 Kyle Knoepfel
* C++ changes to accommodate compilation with Clang.
192 27 Kyle Knoepfel
* %{color:red}Breaking changes:%
193 20 Kyle Knoepfel
** Removed @art::BranchType@ from @art::TypeLabel@ class to avoid duplication downstream.
194 20 Kyle Knoepfel
** Removed @art::DoNotRecordParents@ base class.
195 20 Kyle Knoepfel
196 20 Kyle Knoepfel
197 27 Kyle Knoepfel
h2. %(#10604)canvas% version:1.06.04, 2017/03/22 ([[art:Release Notes 2.06.03|art suite 2.06.03]]).
198 17 Kyle Knoepfel
199 27 Kyle Knoepfel
h2. %(#10603)canvas% version:1.06.03, 2017/02/27 ([[art:Release Notes 2.06.02|art suite 2.06.02]]).
200 16 Kyle Knoepfel
201 16 Kyle Knoepfel
* Depends on patched version of ROOT that supports @gPad->WaitForPrimitive@ (resolves issue #15665).
202 16 Kyle Knoepfel
203 27 Kyle Knoepfel
h2. %(#10602)canvas% version:1.06.02, 2017/02/08 ([[art:Release Notes 2.06.01|art suite 2.06.01]]).
204 1 Lynn Garren
205 27 Kyle Knoepfel
h2. %(#10601)canvas% version:1.06.01, 2017/02/07 ([[art:Release Notes 2.06.00|art suite 2.06.00]]).
206 1 Lynn Garren
207 26 Kyle Knoepfel
* Merge libraries into one @canvas@ library (resolves issue #12995).
208 26 Kyle Knoepfel
* Replace ambiguous error code with two more descriptive codes (resolves issue #14664).
209 26 Kyle Knoepfel
* Further develop @art::Level@ enumeration infrastructure to support non-state-machine @art@ (related to issue #15398).
210 26 Kyle Knoepfel
* Enhance @art::Assns@ functionality (issues #10539).
211 26 Kyle Knoepfel
* Improve consistency of @art::Ptr@ handling (resolves issue #14763).
212 26 Kyle Knoepfel
* Allow for @const@ qualification of the `size()` member function during type introspection, which @art::Wrapper@ relies on for @Assns@ products (resolves issue #14378).
213 15 Kyle Knoepfel
214 27 Kyle Knoepfel
h2. %(#10501)canvas% version:1.05.01, 2016/10/19 ([[art:Release Notes 2.05.00|art suite 2.05.00]]).
215 11 Kyle Knoepfel
216 12 Kyle Knoepfel
* Minor bug fixes.
217 12 Kyle Knoepfel
218 27 Kyle Knoepfel
h2. %(#10500)canvas% version:1.05.00, 2016/09/14 ([[art:Release Notes 2.04.00|art suite 2.04.00]], [[art:Release Notes 2.04.01|art suite 2.04.01]]).
219 9 Kyle Knoepfel
220 10 Kyle Knoepfel
* Substantially improve @RangeSet@ merging efficiency (resolves issue #13765).
221 10 Kyle Knoepfel
* Move @canvas/Utilities/detail/metaprogramming.h@ to @cetlib/detail/metaprogramming.h@.
222 10 Kyle Knoepfel
* Update to CLHEP 2.3.3.2 and ROOT 6.06.08.
223 10 Kyle Knoepfel
224 27 Kyle Knoepfel
h2. %(#10406)canvas% version:1.04.06, 2016/08/17 ([[art:Release Notes 2.03.00|art suite 2.03.00]]).
225 8 Kyle Knoepfel
226 8 Kyle Knoepfel
* Remove link-time dependency of @aggregate.h@ on @TH1@.
227 8 Kyle Knoepfel
228 27 Kyle Knoepfel
h2. %(#10405)canvas% version:1.04.05, 2016/08/08 ([[art:Release Notes 2.02.02|art suite 2.02.02]]).
229 7 Kyle Knoepfel
230 7 Kyle Knoepfel
* Remove dependency on @rapidjson@, which is not used in @canvas@ (resolves issue #12990).
231 7 Kyle Knoepfel
* Fix exception message whenever a dictionary is not found (resolves issue #13459).
232 7 Kyle Knoepfel
233 27 Kyle Knoepfel
h2. %(#10404)canvas% version:1.04.04, 2016/08/02 ([[art:Release Notes 2.02.01|art suite 2.02.01]]).
234 5 Kyle Knoepfel
235 6 Kyle Knoepfel
* Upgrade to ROOT 6.06.04b, which includes fixes to some memory leaks.
236 6 Kyle Knoepfel
237 27 Kyle Knoepfel
h2. %(#10403)canvas% version:1.04.03, 2016/08/02 ([[art:Release Notes 2.02.00|art suite 2.02.00]]).
238 6 Kyle Knoepfel
239 6 Kyle Knoepfel
* Remove explicit template instantiations in @classes.h@ files.
240 5 Kyle Knoepfel
241 27 Kyle Knoepfel
h2. %(#10402)canvas% version:1.04.02, 2016/06/08 ([[art:Release Notes 2.01.02|art suite 2.01.02]]).
242 4 Kyle Knoepfel
243 4 Kyle Knoepfel
* Fix comparison of unsigned and signed integers in aggregation test suite.
244 4 Kyle Knoepfel
245 27 Kyle Knoepfel
h2. %(#10401)canvas% version:1.04.01, 2016/06/07 ([[art:Release Notes 2.01.01|art suite 2.01.01]]).
246 2 Kyle Knoepfel
247 27 Kyle Knoepfel
h2. %(#10400)canvas% version:1.04.00, 2016/06/06 ([[art:Release Notes 2.01.00|art suite 2.01.00]]).
248 2 Kyle Knoepfel
249 3 Kyle Knoepfel
* @art::Wrapper<T>@ includes an additional datum called @rangeSetID@ that corresponds to the @rowid@ of the appropriate SQLite range-set table.
250 3 Kyle Knoepfel
* Product aggregation supported for @art::Wrapper<T>@.
251 3 Kyle Knoepfel
252 27 Kyle Knoepfel
h2. %(#10302)canvas% version:1.03.02, 2016/05/24 ([[art:Release Notes 2.00.02|art suite 2.00.02]]).
253 1 Lynn Garren
254 27 Kyle Knoepfel
h2. %(#10301)canvas% version:1.03.01, 2016/05/16 ([[art:Release Notes 2.00.01|art suite 2.00.01]]).