summaryrefslogtreecommitdiff
path: root/docs/manual/changes.html
blob: 58dc4745991da52bfeb9da8891fa0ac946c98fd2 (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
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
<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.78.1">
<link rel="home" href="../manual.html" title="pugixml 1.4">
<link rel="up" href="../manual.html" title="pugixml 1.4">
<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>
<a href="http://pugixml.org/">pugixml 1.4</a> 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>
<h6>
<a name="manual.changes.h0"></a>
      <span class="phrase"><a name="manual.changes.27_02_2014___version_1_4"></a></span><a class="link" href="changes.html#manual.changes.27_02_2014___version_1_4">27.02.2014
      - version 1.4</a>
    </h6>
<p>
      Major release, featuring various new features, bug fixes and compatibility
      improvements.
    </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          Specification changes:
          <div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
                Documents without element nodes are now rejected with status_no_document_element
                error, unless parse_fragment option is used
              </li></ol></div>
        </li>
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added XML fragment parsing (parse_fragment flag)
              </li>
<li class="listitem">
                Added PCDATA whitespace trimming (parse_trim_pcdata flag)
              </li>
<li class="listitem">
                Added long long support for xml_attribute and xml_text (as_llong,
                as_ullong and set_value/set overloads)
              </li>
<li class="listitem">
                Added hexadecimal integer parsing support for as_int/as_uint/as_llong/as_ullong
              </li>
<li class="listitem">
                Added xml_node::append_buffer to improve performance of assembling
                documents from fragments
              </li>
<li class="listitem">
                xml_named_node_iterator is now bidirectional
              </li>
<li class="listitem">
                Reduced XPath stack consumption during compilation and evaluation
                (useful for embedded systems)
              </li>
</ol></div>
        </li>
<li class="listitem">
          Compatibility improvements:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Improved support for platforms without wchar_t support
              </li>
<li class="listitem">
                Fixed several false positives in clang static analysis
              </li>
<li class="listitem">
                Fixed several compilation warnings for various GCC versions
              </li>
</ol></div>
        </li>
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed undefined pointer arithmetic in XPath implementation
              </li>
<li class="listitem">
                Fixed non-seekable iostream support for certain stream types, i.e.
                boost file_source with pipe input
              </li>
<li class="listitem">
                Fixed xpath_query::return_type() for some expressions
              </li>
<li class="listitem">
                Fixed dllexport issues with xml_named_node_iterator
              </li>
<li class="listitem">
                Fixed find_child_by_attribute assertion for attributes with null
                name/value
              </li>
</ol></div>
        </li>
</ul></div>
<h6>
<a name="manual.changes.h1"></a>
      <span class="phrase"><a name="manual.changes.1_05_2012___version_1_2"></a></span><a class="link" href="changes.html#manual.changes.1_05_2012___version_1_2">1.05.2012
      - version 1.2</a>
    </h6>
<p>
      Major release, featuring header-only mode, various interface enhancements (i.e.
      PCDATA manipulation and C++11 iteration), many other features and compatibility
      improvements.
    </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          New features:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added xml_text helper class for working with PCDATA/CDATA contents
                of an element node
              </li>
<li class="listitem">
                Added optional header-only mode (controlled by PUGIXML_HEADER_ONLY
                define)
              </li>
<li class="listitem">
                Added xml_node::children() and xml_node::attributes() for C++11 ranged
                for loop or BOOST_FOREACH
              </li>
<li class="listitem">
                Added support for Latin-1 (ISO-8859-1) encoding conversion during
                loading and saving
              </li>
<li class="listitem">
                Added custom default values for xml_attribute::as_* (they are returned if the attribute
                does not exist)
              </li>
<li class="listitem">
                Added parse_ws_pcdata_single flag for preserving whitespace-only
                PCDATA in case it's the only child
              </li>
<li class="listitem">
                Added format_save_file_text for xml_document::save_file to open files
                as text instead of binary (changes newlines on Windows)
              </li>
<li class="listitem">
                Added format_no_escapes flag to disable special symbol escaping (complements
                ~parse_escapes)
              </li>
<li class="listitem">
                Added support for loading document from streams that do not support
                seeking
              </li>
<li class="listitem">
                Added PUGIXML_MEMORY_* constants for tweaking allocation behavior (useful for embedded
                systems)
              </li>
<li class="listitem">
                Added PUGIXML_VERSION preprocessor define
              </li>
</ol></div>
        </li>
<li class="listitem">
          Compatibility improvements:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Parser does not require setjmp support (improves compatibility with
                some embedded platforms, enables clr:pure compilation)
              </li>
<li class="listitem">
                STL forward declarations are no longer used (fixes SunCC/RWSTL compilation,
                fixes clang compilation in C++11 mode)
              </li>
<li class="listitem">
                Fixed AirPlay SDK, Android, Windows Mobile (WinCE) and C++/CLI compilation
              </li>
<li class="listitem">
                Fixed several compilation warnings for various GCC versions, Intel
                C++ compiler and Clang
              </li>
</ol></div>
        </li>
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed unsafe bool conversion to avoid problems on C++/CLI
              </li>
<li class="listitem">
                Iterator dereference operator is const now (fixes Boost filter_iterator
                support)
              </li>
<li class="listitem">
                xml_document::save_file now checks for file I/O errors during saving
              </li>
</ol></div>
        </li>
</ul></div>
<h6>
<a name="manual.changes.h2"></a>
      <span class="phrase"><a name="manual.changes.1_11_2010___version_1_0"></a></span><a class="link" href="changes.html#manual.changes.1_11_2010___version_1_0">1.11.2010
      - version 1.0</a>
    </h6>
<p>
      Major release, featuring many XPath enhancements, wide character filename support,
      miscellaneous performance improvements, bug fixes and more.
    </p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
          XPath:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                XPath implementation is moved to pugixml.cpp (which is the only source
                file now); use PUGIXML_NO_XPATH if you want to disable XPath to reduce
                code size
              </li>
<li class="listitem">
                XPath is now supported without exceptions (PUGIXML_NO_EXCEPTIONS);
                the error handling mechanism depends on the presence of exception
                support
              </li>
<li class="listitem">
                XPath is now supported without STL (PUGIXML_NO_STL)
              </li>
<li class="listitem">
                Introduced variable support
              </li>
<li class="listitem">
                Introduced new xpath_query::evaluate_string, which works without
                STL
              </li>
<li class="listitem">
                Introduced new xpath_node_set constructor (from an iterator range)
              </li>
<li class="listitem">
                Evaluation function now accept attribute context nodes
              </li>
<li class="listitem">
                All internal allocations use custom allocation functions
              </li>
<li class="listitem">
                Improved error reporting; now a last parsed offset is returned together
                with the parsing error
              </li>
</ol></div>
        </li>
<li class="listitem">
          Bug fixes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Fixed memory leak for loading from streams with stream exceptions
                turned on
              </li>
<li class="listitem">
                Fixed custom deallocation function calling with null pointer in one
                case
              </li>
<li class="listitem">
                Fixed missing attributes for iterator category functions; all functions/classes
                can now be DLL-exported
              </li>
<li class="listitem">
                Worked around Digital Mars compiler bug, which lead to minor read
                overfetches in several functions
              </li>
<li class="listitem">
                load_file now works with 2+ Gb files in MSVC/MinGW
              </li>
<li class="listitem">
                XPath: fixed memory leaks for incorrect queries
              </li>
<li class="listitem">
                XPath: fixed xpath_node() attribute constructor with empty attribute
                argument
              </li>
<li class="listitem">
                XPath: fixed lang() function for non-ASCII arguments
              </li>
</ol></div>
        </li>
<li class="listitem">
          Specification changes:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                CDATA nodes containing ]]&gt; are printed as several nodes; while
                this changes the internal structure, this is the only way to escape
                CDATA contents
              </li>
<li class="listitem">
                Memory allocation errors during parsing now preserve last parsed
                offset (to give an idea about parsing progress)
              </li>
<li class="listitem">
                If an element node has the only child, and it is of CDATA type, then
                the extra indentation is omitted (previously this behavior only held
                for PCDATA children)
              </li>
</ol></div>
        </li>
<li class="listitem">
          Additional functionality:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Added xml_parse_result default constructor
              </li>
<li class="listitem">
                Added xml_document::load_file and xml_document::save_file with wide
                character paths
              </li>
<li class="listitem">
                Added as_utf8 and as_wide overloads for std::wstring/std::string
                arguments
              </li>
<li class="listitem">
                Added DOCTYPE node type (node_doctype) and a special parse flag,
                parse_doctype, to add such nodes to the document during parsing
              </li>
<li class="listitem">
                Added parse_full parse flag mask, which extends parse_default with
                all node type parsing flags except parse_ws_pcdata
              </li>
<li class="listitem">
                Added xml_node::hash_value() and xml_attribute::hash_value() functions
                for use in hash-based containers
              </li>
<li class="listitem">
                Added internal_object() and additional constructor for both xml_node
                and xml_attribute for easier marshalling (useful for language bindings)
              </li>
<li class="listitem">
                Added xml_document::document_element() function
              </li>
<li class="listitem">
                Added xml_node::prepend_attribute, xml_node::prepend_child and xml_node::prepend_copy
                functions
              </li>
<li class="listitem">
                Added xml_node::append_child, xml_node::prepend_child, xml_node::insert_child_before
                and xml_node::insert_child_after overloads for element nodes (with
                name instead of type)
              </li>
<li class="listitem">
                Added xml_document::reset() function
              </li>
</ol></div>
        </li>
<li class="listitem">
          Performance improvements:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                xml_node::root() and xml_node::offset_debug() are now O(1) instead
                of O(logN)
              </li>
<li class="listitem">
                Minor parsing optimizations
              </li>
<li class="listitem">
                Minor memory optimization for strings in DOM tree (set_name/set_value)
              </li>
<li class="listitem">
                Memory optimization for string memory reclaiming in DOM tree (set_name/set_value
                now reallocate the buffer if memory waste is too big)
              </li>
<li class="listitem">
                XPath: optimized document order sorting
              </li>
<li class="listitem">
                XPath: optimized child/attribute axis step
              </li>
<li class="listitem">
                XPath: optimized number-to-string conversions in MSVC
              </li>
<li class="listitem">
                XPath: optimized concat for many arguments
              </li>
<li class="listitem">
                XPath: optimized evaluation allocation mechanism: constant and document
                strings are not heap-allocated
              </li>
<li class="listitem">
                XPath: optimized evaluation allocation mechanism: all temporaries'
                allocations use fast stack-like allocator
              </li>
</ol></div>
        </li>
<li class="listitem">
          Compatibility:
          <div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
                Removed wildcard functions (xml_node::child_w, xml_node::attribute_w,
                etc.)
              </li>
<li class="listitem">
                Removed xml_node::all_elements_by_name
              </li>
<li class="listitem">
                Removed xpath_type_t enumeration; use xpath_value_type instead
              </li>
<li class="listitem">
                Removed format_write_bom_utf8 enumeration; use format_write_bom instead
              </li>
<li class="listitem">
                Removed xml_document::precompute_document_order, xml_attribute::document_order
                and xml_node::document_order functions; document order sort optimization
                is now automatic
              </li>
<li class="listitem">
                Removed xml_document::parse functions and transfer_ownership struct;
                use xml_document::load_buffer_inplace and xml_document::load_buffer_inplace_own
                instead
              </li>
<li class="listitem">
                Removed as_utf16 function; use as_wide instead
              </li>
</ol></div>
        </li>
</ul></div>
<h6>
<a name="manual.changes.h3"></a>
      <span class="phrase"><a name="manual.changes.1_07_2010___version_0_9"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h4"></a>
      <span class="phrase"><a name="manual.changes.8_11_2009___version_0_5"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h5"></a>
      <span class="phrase"><a name="manual.changes.17_09_2009___version_0_42"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h6"></a>
      <span class="phrase"><a name="manual.changes.8_02_2009___version_0_41"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h7"></a>
      <span class="phrase"><a name="manual.changes.18_01_2009___version_0_4"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h8"></a>
      <span class="phrase"><a name="manual.changes.31_10_2007___version_0_34"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h9"></a>
      <span class="phrase"><a name="manual.changes.21_02_2007___version_0_3"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h10"></a>
      <span class="phrase"><a name="manual.changes.6_11_2006___version_0_2"></a></span><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" style="list-style-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>
<h6>
<a name="manual.changes.h11"></a>
      <span class="phrase"><a name="manual.changes.15_07_2006___version_0_1"></a></span><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; 2014 Arseny Kapoulkine<p>
        Distributed under the MIT License
      </p>
</div></td>
</tr></table>
<hr>
<table width="100%"><tr>
<td>
<a href="http://pugixml.org/">pugixml 1.4</a> 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>