summaryrefslogtreecommitdiff
path: root/docs/manual/changes.html
blob: 38e0cdaf2390a18a02a6ad4ceb0a5a3b0e754b30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Changelog</title>
<link rel="stylesheet" href="../pugixml.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../manual.html" title="pugixml 0.9">
<link rel="up" href="../manual.html" title="pugixml 0.9">
<link rel="prev" href="xpath.html" title="XPath">
<link rel="next" href="apiref.html" title="API Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table width="100%"><tr>
<td>pugixml 0.9 manual |
		<a href="../manual.html">Overview</a> |
		<a href="install.html">Installation</a> |
		Document:
		<a href="dom.html">Object model</a> &middot; <a href="loading.html">Loading</a> &middot; <a href="access.html">Accessing</a> &middot; <a href="modify.html">Modifying</a> &middot; <a href="saving.html">Saving</a> |
		<a href="xpath.html">XPath</a> |
		<a href="apiref.html">API Reference</a> |
		<a href="toc.html">Table of Contents</a>
</td>
<td width="*" align="right"><div class="spirit-nav">
<a accesskey="p" href="xpath.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../manual.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../manual.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="apiref.html"><img src="../images/next.png" alt="Next"></a>
</div></td>
</tr></table>
<hr>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="manual.changes"></a><a class="link" href="changes.html" title="Changelog"> Changelog</a>
</h2></div></div></div>
<a name="manual.changes.1_07_2010___version_0_9"></a><h6>
      <a class="link" href="changes.html#manual.changes.1_07_2010___version_0_9">1.07.2010 - version
      0.9</a>
    </h6>
<p>
      Major release, featuring extended and improved Unicode support, miscellaneous
      performance improvements, bug fixes and more.
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Major Unicode improvements:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Introduced encoding support (automatic/manual encoding detection
                on load, manual encoding selection on save, conversion from/to UTF8,
                UTF16 LE/BE, UTF32 LE/BE)
              </li>
<li class="listitem">
                Introduced wchar_t mode (you can set PUGIXML_WCHAR_MODE define to
                switch pugixml internal encoding from UTF8 to wchar_t; all functions
                are switched to their Unicode variants)
              </li>
<li class="listitem">
                Load/save functions now support wide streams
              </li>
</ol></div>
        </li>
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed document corruption on failed parsing bug
              </li>
<li class="listitem">
                XPath string &lt;-&gt; number conversion improvements (increased
                precision, fixed crash for huge numbers)
              </li>
<li class="listitem">
                Improved DOCTYPE parsing: now parser recognizes all well-formed DOCTYPE
                declarations
              </li>
<li class="listitem">
                Fixed xml_attribute::as_uint() for large numbers (i.e. 2^32-1)
              </li>
<li class="listitem">
                Fixed xml_node::first_element_by_path for path components that are
                prefixes of node names, but are not exactly equal to them.
              </li>
</ol></div>
        </li>
<li class="listitem">
          Specification changes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                parse() API changed to load_buffer/load_buffer_inplace/load_buffer_inplace_own;
                load_buffer APIs do not require zero-terminated strings.
              </li>
<li class="listitem">
                Renamed as_utf16 to as_wide
              </li>
<li class="listitem">
                Changed xml_node::offset_debug return type and xml_parse_result::offset
                type to ptrdiff_t
              </li>
<li class="listitem">
                Nodes/attributes with empty names are now printed as :anonymous
              </li>
</ol></div>
        </li>
<li class="listitem">
          Performance improvements:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Optimized document parsing and saving
              </li>
<li class="listitem">
                Changed internal memory management: internal allocator is used for
                both metadata and name/value data; allocated pages are deleted if
                all allocations from them are deleted
              </li>
<li class="listitem">
                Optimized memory consumption: sizeof(xml_node_struct) reduced from
                40 bytes to 32 bytes on x86
              </li>
<li class="listitem">
                Optimized debug mode parsing/saving by order of magnitude
              </li>
</ol></div>
        </li>
<li class="listitem">
          Miscellaneous:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                All STL includes except &lt;exception&gt; in pugixml.hpp are replaced
                with forward declarations
              </li>
<li class="listitem">
                xml_node::remove_child and xml_node::remove_attribute now return
                the operation result
              </li>
</ol></div>
        </li>
<li class="listitem">
          Compatibility:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                parse() and as_utf16 are left for compatibility (these functions
                are deprecated and will be removed in version 1.0)
              </li>
<li class="listitem">
                Wildcard functions, document_order/precompute_document_order functions,
                all_elements_by_name function and format_write_bom_utf8 flag are
                deprecated and will be removed in version 1.0
              </li>
<li class="listitem">
                xpath_type_t enumeration was renamed to xpath_value_type; xpath_type_t
                is deprecated and will be removed in version 1.0
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.8_11_2009___version_0_5"></a><h6>
      <a class="link" href="changes.html#manual.changes.8_11_2009___version_0_5">8.11.2009 - version
      0.5</a>
    </h6>
<p>
      Major bugfix release. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          XPath bugfixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed translate(), lang() and concat() functions (infinite loops/crashes)
              </li>
<li class="listitem">
                Fixed compilation of queries with empty literal strings ("")
              </li>
<li class="listitem">
                Fixed axis tests: they never add empty nodes/attributes to the resulting
                node set now
              </li>
<li class="listitem">
                Fixed string-value evaluation for node-set (the result excluded some
                text descendants)
              </li>
<li class="listitem">
                Fixed self:: axis (it behaved like ancestor-or-self::)
              </li>
<li class="listitem">
                Fixed following:: and preceding:: axes (they included descendent
                and ancestor nodes, respectively)
              </li>
<li class="listitem">
                Minor fix for namespace-uri() function (namespace declaration scope
                includes the parent element of namespace declaration attribute)
              </li>
<li class="listitem">
                Some incorrect queries are no longer parsed now (i.e. foo: *)
              </li>
<li class="listitem">
                Fixed text()/etc. node test parsing bug (i.e. foo[text()] failed
                to compile)
              </li>
<li class="listitem">
                Fixed root step (/) - it now selects empty node set if query is evaluated
                on empty node
              </li>
<li class="listitem">
                Fixed string to number conversion ("123 " converted to
                NaN, "123 .456" converted to 123.456 - now the results
                are 123 and NaN, respectively)
              </li>
<li class="listitem">
                Node set copying now preserves sorted type; leads to better performance
                on some queries
              </li>
</ol></div>
        </li>
<li class="listitem">
          Miscellaneous bugfixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed xml_node::offset_debug for PI nodes
              </li>
<li class="listitem">
                Added empty attribute checks to xml_node::remove_attribute
              </li>
<li class="listitem">
                Fixed node_pi and node_declaration copying
              </li>
<li class="listitem">
                Const-correctness fixes
              </li>
</ol></div>
        </li>
<li class="listitem">
          Specification changes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                xpath_node::select_nodes() and related functions now throw exception
                if expression return type is not node set (instead of assertion)
              </li>
<li class="listitem">
                xml_node::traverse() now sets depth to -1 for both begin() and end()
                callbacks (was 0 at begin() and -1 at end())
              </li>
<li class="listitem">
                In case of non-raw node printing a newline is output after PCDATA
                inside nodes if the PCDATA has siblings
              </li>
<li class="listitem">
                UTF8 -&gt; wchar_t conversion now considers 5-byte UTF8-like sequences
                as invalid
              </li>
</ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added xpath_node_set::operator[] for index-based iteration
              </li>
<li class="listitem">
                Added xpath_query::return_type()
              </li>
<li class="listitem">
                Added getter accessors for memory-management functions
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.17_09_2009___version_0_42"></a><h6>
      <a class="link" href="changes.html#manual.changes.17_09_2009___version_0_42">17.09.2009 - version
      0.42</a>
    </h6>
<p>
      Maintenance release. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed deallocation in case of custom allocation functions or if delete[]
                / free are incompatible
              </li>
<li class="listitem">
                XPath parser fixed for incorrect queries (i.e. incorrect XPath queries
                should now always fail to compile)
              </li>
<li class="listitem">
                Const-correctness fixes for find_child_by_attribute
              </li>
<li class="listitem">
                Improved compatibility (miscellaneous warning fixes, fixed cstring
                include dependency for GCC)
              </li>
<li class="listitem">
                Fixed iterator begin/end and print function to work correctly for
                empty nodes
              </li>
</ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added PUGIXML_API/PUGIXML_CLASS/PUGIXML_FUNCTION configuration macros
                to control class/function attributes
              </li>
<li class="listitem">
                Added xml_attribute::set_value overloads for different types
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.8_02_2009___version_0_41"></a><h6>
      <a class="link" href="changes.html#manual.changes.8_02_2009___version_0_41">8.02.2009 - version
      0.41</a>
    </h6>
<p>
      Maintenance release. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
                Fixed bug with node printing (occasionally some content was not written
                to output stream)
              </li></ol></div>
        </li></ul></div>
<a name="manual.changes.18_01_2009___version_0_4"></a><h6>
      <a class="link" href="changes.html#manual.changes.18_01_2009___version_0_4">18.01.2009 - version
      0.4</a>
    </h6>
<p>
      Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Documentation fix in samples for parse() with manual lifetime control
              </li>
<li class="listitem">
                Fixed document order sorting in XPath (it caused wrong order of nodes
                after xpath_node_set::sort and wrong results of some XPath queries)
              </li>
</ol></div>
        </li>
<li class="listitem">
          Node printing changes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Single quotes are no longer escaped when printing nodes
              </li>
<li class="listitem">
                Symbols in second half of ASCII table are no longer escaped when
                printing nodes; because of this, format_utf8 flag is deleted as it's
                no longer needed and format_write_bom is renamed to format_write_bom_utf8.
              </li>
<li class="listitem">
                Reworked node printing - now it works via xml_writer interface; implementations
                for FILE* and std::ostream are available. As a side-effect, xml_document::save_file
                now works without STL.
              </li>
</ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added unsigned integer support for attributes (xml_attribute::as_uint,
                xml_attribute::operator=)
              </li>
<li class="listitem">
                Now document declaration (&lt;?xml ...?&gt;) is parsed as node with
                type node_declaration when parse_declaration flag is specified (access
                to encoding/version is performed as if they were attributes, i.e.
                doc.child("xml").attribute("version").as_float());
                corresponding flags for node printing were also added
              </li>
<li class="listitem">
                Added support for custom memory management (see set_memory_management_functions
                for details)
              </li>
<li class="listitem">
                Implemented node/attribute copying (see xml_node::insert_copy_* and
                xml_node::append_copy for details)
              </li>
<li class="listitem">
                Added find_child_by_attribute and find_child_by_attribute_w to simplify
                parsing code in some cases (i.e. COLLADA files)
              </li>
<li class="listitem">
                Added file offset information querying for debugging purposes (now
                you're able to determine exact location of any xml_node in parsed
                file, see xml_node::offset_debug for details)
              </li>
<li class="listitem">
                Improved error handling for parsing - now load(), load_file() and
                parse() return xml_parse_result, which contains error code and last
                parsed offset; this does not break old interface as xml_parse_result
                can be implicitly casted to bool.
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.31_10_2007___version_0_34"></a><h6>
      <a class="link" href="changes.html#manual.changes.31_10_2007___version_0_34">31.10.2007 - version
      0.34</a>
    </h6>
<p>
      Maintenance release. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed bug with loading from text-mode iostreams
              </li>
<li class="listitem">
                Fixed leak when transfer_ownership is true and parsing is failing
              </li>
<li class="listitem">
                Fixed bug in saving (\r and \n are now escaped in attribute values)
              </li>
<li class="listitem">
                Renamed free() to destroy() - some macro conflicts were reported
              </li>
</ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Improved compatibility (supported Digital Mars C++, MSVC 6, CodeWarrior
                8, PGI C++, Comeau, supported PS3 and XBox360)
              </li>
<li class="listitem">
                PUGIXML_NO_EXCEPTION flag for platforms without exception handling
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.21_02_2007___version_0_3"></a><h6>
      <a class="link" href="changes.html#manual.changes.21_02_2007___version_0_3">21.02.2007 - version
      0.3</a>
    </h6>
<p>
      Refactored, reworked and improved version. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Interface:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added XPath
              </li>
<li class="listitem">
                Added tree modification functions
              </li>
<li class="listitem">
                Added no STL compilation mode
              </li>
<li class="listitem">
                Added saving document to file
              </li>
<li class="listitem">
                Refactored parsing flags
              </li>
<li class="listitem">
                Removed xml_parser class in favor of xml_document
              </li>
<li class="listitem">
                Added transfer ownership parsing mode
              </li>
<li class="listitem">
                Modified the way xml_tree_walker works
              </li>
<li class="listitem">
                Iterators are now non-constant
              </li>
</ol></div>
        </li>
<li class="listitem">
          Implementation:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Support of several compilers and platforms
              </li>
<li class="listitem">
                Refactored and sped up parsing core
              </li>
<li class="listitem">
                Improved standard compliancy
              </li>
<li class="listitem">
                Added XPath implementation
              </li>
<li class="listitem">
                Fixed several bugs
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.6_11_2006___version_0_2"></a><h6>
      <a class="link" href="changes.html#manual.changes.6_11_2006___version_0_2">6.11.2006 - version
      0.2</a>
    </h6>
<p>
      First public release. Changes:
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed child_value() (for empty nodes)
              </li>
<li class="listitem">
                Fixed xml_parser_impl warning at W4
              </li>
</ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Introduced child_value(name) and child_value_w(name)
              </li>
<li class="listitem">
                parse_eol_pcdata and parse_eol_attribute flags + parse_minimal optimizations
              </li>
<li class="listitem">
                Optimizations of strconv_t
              </li>
</ol></div>
        </li>
</ul></div>
<a name="manual.changes.15_07_2006___version_0_1"></a><h6>
      <a class="link" href="changes.html#manual.changes.15_07_2006___version_0_1">15.07.2006 - version
      0.1</a>
    </h6>
<p>
      First private release for testing purposes
    </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2010 Arseny Kapoulkine<p>
        Distributed under the MIT License
      </p>
</div></td>
</tr></table>
<hr>
<table width="100%"><tr>
<td>pugixml 0.9 manual |
		<a href="../manual.html">Overview</a> |
		<a href="install.html">Installation</a> |
		Document:
		<a href="dom.html">Object model</a> &middot; <a href="loading.html">Loading</a> &middot; <a href="access.html">Accessing</a> &middot; <a href="modify.html">Modifying</a> &middot; <a href="saving.html">Saving</a> |
		<a href="xpath.html">XPath</a> |
		<a href="apiref.html">API Reference</a> |
		<a href="toc.html">Table of Contents</a>
</td>
<td width="*" align="right"><div class="spirit-nav">
<a accesskey="p" href="xpath.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../manual.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../manual.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="apiref.html"><img src="../images/next.png" alt="Next"></a>
</div></td>
</tr></table>
</body>
</html>