forked from dajobe/raptor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RELEASE.html
4383 lines (3263 loc) · 154 KB
/
RELEASE.html
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
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Raptor RDF Syntax Library - Release Notes</title>
</head>
<body>
<h1 style="text-align:center">Raptor RDF Syntax Library - Release Notes</h1>
<h2 id="rel2_0_11"><a name="rel2_0_11">Raptor2 2.0.11 changes</a></h2>
<p>Not yet released.
</p>
<h2 id="rel2_0_10"><a name="rel2_0_10">Raptor2 2.0.10 changes</a></h2>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=532">0000532</a>: configure.ac: required file `src/raptor_config.h.in' not found</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=535">0000535</a>: configure accepts bogus values for --with-xml2-config</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=545">0000545</a>: Reopen issue 503</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=548">0000548</a>: xml:lang inside rdf:parseType="Literal" are removed in parsed output</li>
</ul>
<h3>Parser changes</h3>
<p>Turtle parser was updated to handle
<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle Terse RDF Triple Language</a> W3C Candidate Recommendation 19 February 2013
(Turtle 2013)
The main changes were to align with SPARQL-style blank node names,
prefixes and local names.
</p>
<p>N-Triples parser was updated to handle
<a href="http://www.w3.org/TR/2013/NOTE-n-triples-20130409/">N-Triples - A line-based syntax for an RDF graph</a> W3C Working Group Note 09 April 2013 (N-Triples 2013)
The main changes were to allow \b \f, UTF-8 in strings and
URIs and the SPARQL-style blank node names.</p>
<p>RDF/XML parser updated to understand the new RDF 1.1 datatypes:
rdf:HTML and rdf:langString</p>
<h3>Serializer changes</h3>
<p>Updated N-Triples and Turtle serializers (via writers) for 2013
versions based on SPARQL 1.1 definitions. These new formats
have incompatible changes.
</p>
<p>Added functions for writing escaped Turtle / N-Triples terms:</p>
<pre>
int raptor_string_escaped_write(const unsigned char *string,
size_t len, const char delim, unsigned int flags, raptor_iostream *iostr);
int raptor_term_escaped_write(const raptor_term *term, unsigned int flags,
raptor_iostream* iostr);
int raptor_uri_escaped_write(raptor_uri* uri, raptor_uri* base_uri,
unsigned int flags, raptor_iostream *iostr);
</pre>
<p>These uses the new new <code>raptor_escaped_write_bitflags</code>
enum bitflag values for the <code>flags</code> argument.</p>
<p>Deprecated <code>raptor_string_python_write()</code> for
<code>raptor_string_escaped_write()</code> with flags.</p>
<h3>Configuration and build changes</h3>
<p><code>configure</code> now recommends flex 2.5.36</p>
<p><code>configure</code> was updated to switch configuring libxml
and libcurl to use the <code>PKG_PROG_PKG_CONFIG</code> and
<code>PKG_CHECK_MODULES</code> macros. The preference remains to
prefer looking for the xml2-config and curl-config programs before
trying pkg-config unless <code>--with-curl-config=no</code>
<code>--with-xml2-config=no</code> are used.
</p>
<p><code>configure</code> now dies if xml2-config or xslt-config
point at non executable files. Patch from Michael Stahl - thanks.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=535">Issue #0000534</a>
</p>
<p><code>configure</code> now adds curl or libxml pkg-config requires
only if they were found via pkg-config; this prevents unnecessary
dependency on pkg-config files if they are not needed.</p>
<p>Updated autogen.sh and code to handle variations of header
macro.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=532">Issue #0000532</a>
</p>
<h2 id="rel2_0_9"><a name="rel2_0_9">Raptor2 2.0.9 changes</a></h2>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=499">0000499</a>: Turtle parser fails to correctly parse valid syntax</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=508">0000508</a>: Raptor objects to possibly valid Turtle syntax</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=520">0000520</a>: compilation failure</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=521">0000521</a>: Python RDF 1.0.14.1 segfault when one tries to parse xhtml+rdf using the RDFa parser</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=526">0000526</a>: Document how to find gtkdocize in INSTALL.html</li>
</ul>
<h3>Parser Changes</h3>
<p>RDFa parser:
Handle non-namespaced elements without crash in RDFa.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=521">Issue #0000521</a>
</p>
<p>Turtle Parser: Added full support for
<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle Terse RDF Triple Language</a> W3C Candidate Recommendation 19 February 2013
</p>
<p>This includes accepting new keywords from SPARQL
(<code>BASE</code> and <code>PREFIX</code>), triples forms and
details of the characters allowed in URIs, Literals, Prefix Names,
Local Names and Blank Node identifiers. Some existing documents that
used <code>\</code>-escapes in URIs to encode characters not allowed
in URIs, are now forbidden. For example ASCII 32 (0x20) - space,
which should be written as <code>%20</code>.
</p>
<h3>Serializer changes</h3>
<p>Turtle Serializer: Added full support for
<a href="http://www.w3.org/TR/2013/CR-turtle-20130219/">Turtle Terse RDF Triple Language</a> W3C Candidate Recommendation 19 February 2013
which particular effects the encoding of URIs in the serializer.
</p>
<h3>Configuration and build changes</h3>
<p>Added CMake build framework for building Raptor on Microsoft
Windows. Removed the old <code>win32/</code> area and
<code>win32_raptor_config.h</code> references. Contributed by Daniel
Richard G. for Teragram Inc.
</p>
<p>Ensure that a small system BUFSIZ does not affect parser guessing
Patch from Daniel Richard G for Teragram Inc.</p>
<p>Added a compile-time check for
<code>raptor_world_guess_parser_name()</code> to ensure that
<code>RAPTOR_READ_BUFFER_SIZE</code> is at least as large as
<code>FIRSTN</code>, because otherwise the guesser sees fewer than
<code>FIRSTN</code> bytes from the document. Patch from Daniel
Richard G for Teragram Inc.
</p>
<p>Update <code>configure</code> to allow xml2-config and curl-config
to work for libxml and libcurl. It now report on the source of xml, curl
libraries in the configuration status.</p>
<p><code>autogen.sh</code> updates to abort the run if a configuring
program fails, Generate NEWS with old timestamp if missing so
automake can run.</p>
<p>Handle the libxml2 <code>ret->checked</code> field not being
present in older libxml2 versions. The entities checked field was
added 2006-10-10 in <a href="http://git.gnome.org/browse/libxml2/commit/?id=a37a6ad91a61d168ecc4b29263def3363fff4da6and">libxml2 GIT commit a37a6ad91a61d168ecc4b29263def3363fff4da6and</a>
released in libxml2 2.6.27 on 2006-10-25.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=520">Issue #0000520</a>
</p>
<h3>Other changes</h3>
<p><code>raptor_www_set_ssl_verify_options()</code> now supports the
Curl 7.28.1 removal of <code>CURLOPT_SSL_VERIFYHOST</code> with a
value of 2. Now <code>verify_host</code> non-0 means to verify CN, 0
means to not verify.</p>
<p>Remove <code>-m MODE</code> from the <code>rapper(1)</code> help
message which was removed in commit
f94fa561db05b21132b14a2b72f05b77e666c252 on Wed Apr 28 21:31:54 2010
-0700 as part of the Raptor V2 work.
</p>
<h2 id="rel2_0_8"><a name="rel2_0_8">Raptor2 2.0.8 changes</a></h2>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=381">0000381</a>: Raptor incorrectly serializes turtle lists when list nodes are URIs.</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=487">0000487</a>: Does raptor_world_guess_parser_name [librdf_parser_guess_name2] ever return NULL?</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=505">0000505</a>: Parsing certain escaped unicode strings in Turtle cases an error</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=507">0000507</a>: Turtle parse error causes fatal error</li>
</ul>
<h3>Parser class changes</h3>
<p>Guessing a parser with
<code>raptor_world_guess_parser_name()</code> now returns NULL failure
when the guess is very poor, rather just return the first bad result.
Fixes
<a href="http://bugs.librdf.org/mantis/view.php?id=487">Issue #0000487</a>
which was reported in <a href="http://librdf.org/">Redland librdf</a> but
is implemented here.
</p>
<p>Guess parser: now returns error file and line location information
from the guessed parser.</p>
<p>RDFa parser: Updated <a href="https://github.com/rdfa/librdfa">librdfa</a>
to the latest GIT supporting
<a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">RDFa 1.1</a>
with 30 tests still not passing - mostly issues in the core librdfa.
Made several resilience and crash fixes. Updated the RDFa 1.0 test
suite to latest tests and made fixes. The RDFa parser now accepts
aliases 'rdfa10', 'rdfa11' and the default 'rdfa' is RDFa 1.1
</p>
<p>RSS tag soup parser: Use <code>time()</code> when
<code>gettimeofday()</code> is not available. Fix several reference
leaks.
</p>
<p>RDF/XML parser: The range of RDF/XML entity recognizing heuristic was
broadened to allow recognition of documents produced by Stanford's
Protege software (and possibly others). Fixed some parser memory
leaks / double frees.
</p>
<p>Turtle parser: Do not report multiple errors for Turtle string decoding
problems. When a Turtle qname cannot be found, a fatal error is no
longer generated but a regular error message giving information on
the qname that failed (usually due to unknown prefix).
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=507">Issue #0000507</a>
</p>
<h3>SAX2 API changes</h3>
<p><code>raptor_sax2_inscope_xml_language()</code> will now return ""
for explicit no language (<code>xml:lang=""</code>) as well as NULL
for undefined language (no <code>xml:lang</code> present).
</p>
<h3>Serializer class changes</h3>
<p>Turtle: Do not emit a Turtle <code>(...)</code> collection if the
list item is a URI. This fixes
<a href="http://bugs.librdf.org/mantis/view.php?id=381">Issue #0000381</a>.
</p>
<h3>Term class changes</h3>
<p>Added <code>raptor_term_to_turtle_counted_string()</code> counted
string form of <code>raptor_term_to_turtle_string</code>.
</p>
<h3>Unicode class changes</h3>
<p><code>raptor_unicode_utf8_string_put_char()</code> and
<code>raptor_unicode_utf8_string_get_char()</code>
now allow reading / writing U+D800 to U+DFFF (UTF-16 surrogates).
rather than returning failure. BOMs remain forbidden - definitely not UTF-8.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=505">Issue #0000505</a>
</p>
<h3>URI class changes</h3>
<p>Fixed URI resolving with reference (relative) URIs that are bare
queries like '?y' with no path. Now matches the specification
RFC3986 section 5.4.1 Normal Examples.
</p>
<p>Added <code>raptor_new_uri_relative_to_base_counted()</code>
to construct URI relative to current base.
</p>
<p>Added <code>raptor_uri_to_turtle_counted_string()</code> counted
string form of <code>raptor_uri_to_turtle_string</code>.
</p>
<h3>WWW class changes</h3>
<p>The Curl WWW implementation now interprets
<code>Content-Location</code>code> header as absolute or relative URI.
</p>
<h3>Configuration and build changes</h3>
<p>All configure --with-foo options now handle --without-foo (and
--with-foo=no) to disable attempting to find the value in the PATH.
This can be used with --with-xml2-config, --with-xslt-config,
--with-curl-config, --with-icu-config and --with-libwww-config where
the value 'no' or --without-foo can be used to disable it and prevent
automatic searches for the config script in the PATH.
</p>
<p>The <code>-DRAPTOR_DEBUG</code> and <code>-DMAINTAINER_MODE</code>
flags are now written to the config header instead of added to
CPPFLAGS.
</p>
<p>The <code>-g</code> flag is no longer added to CFLAGS or CPPFLAGS
with <code>--enable-debug</code>.</p>
<p>The existing <code>--disable-release</code> (default) now
correctly removes -O options in flag variables for the maintainer.
</p>
<p><code>autogen.sh</code> now looks for the environment variable
<code>NOCONFIGURE</code> to prevent it running configure at the end
of the auto generation run.
</p>
<p>The <code>configure</code> vsnprintf() check was made more
comprehensive.
</p>
<h3>Other changes</h3>
<p>Multiple portability improvements to vsnprintf code and macros.
Also fixed uninitialized variable problems in non-c99 variant of
raptor_vsnprintf2(). Thanks to John Emmas for reporting.
</p>
<p>Multiple portability fixes for building out of the source tree.
Out of source tree 'make check' and 'make dist' should both work.
Thanks to Daniel Richard G. for the patches.
</p>
<p>Multiple portability fixes for building on old Solaris versions.
Thanks to Daniel Richard G. for the patches.
</p>
<p>Multiple portability fixes for building on Windows including
strcasecmp(), windows headers, configuration fixes, parsedate code,
URI test builds, vsnprintf building. Thanks to Daniel Richard G.
for the patches.
</p>
<p>Updated the example <code>rdfguess</code> to accept a file called
or no arguments to read from stdin.</p>
<h2 id="rel2_0_7"><a name="rel2_0_7">Raptor2 2.0.7 changes</a></h2>
<p>CVE-2012-0037 fixed</p>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=448">0000448</a>: Turtle parser does not return error status from turtle_parse_chunk()</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=469">0000469</a>: Allow rapper to bypass server SSL certs checks in libcurl</li>
</ul>
<p>Removed Expat support since expat has not had a release in years
and libxml2 works well. This allows some code simplification.
Updated <code>configure</code> so that if Raptor is configured with
no parser that requires an XML parser, libxml2 will not be required.
</p>
<p>Removed internal Unicode NFC checking code used for checking
RDF/XML literals conformance which was expensive to check and a large
of compiled-in static dataset that was rather out of date. Replaced
with optional compiled use of <a href="http://www.icu-project.org/">ICU</a>.
If ICU is not explicitly configured, no literal checking is done.</p>
<h3>Options changes</h3>
<p>Added new options:</p>
<dl>
<dt><code>RAPTOR_OPTION_NO_FILE</code><br/></dt>
<dd>Deny file requests during parsing. Enabled by default.</dd>
<dt><code>RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code><br/></dt>
<dd>Allow loading of XML external entity loading. Disabled by
default.</dd>
<dt><code>RAPTOR_OPTION_WWW_SSL_VERIFY_PEER</code><br/></dt>
<dd>Controls verifying an SSL peer during parsing / WWW. Takes an
integer value: non-0 to verify peer SSL certificate (default
1).</dd>
<dt><code>RAPTOR_OPTION_WWW_SSL_VERIFY_HOST</code><br/></dt>
<dd>Controls verifying an SSL host during parsing / WWW. Takes an
integer value: 0 none, 1 CN match, 2 host match (default). Other
values are ignored.</dd>
</dl>
<h3>Parser class changes</h3>
<p>The RDF/XML, RSS Tag Soup and RDFa parsers now pass on network,
file and entity loading parser options to the internal SAX2 to enable
enforcing of network, file and entity loading policy.</p>
<p>RDF/JSON parser handles an API change between YAJL V1 and V2.
</p>
<p>Turtle parser now returns parser errors to
<code>raptor_parse_chunk()</code>.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=488">Issue #0000488</a>
</p>
<h3>SAX2 class changes</h3>
<p>Added <code>raptor_sax2_set_uri_filter()</code> to set a URI
filter for any SAX2 calls that do internal lookups of URIs.
</p>
<p>Control file and network loading inside SAX2. Option
<code>RAPTOR_OPTION_LOAD_EXTERNAL_ENTITIES</code> now enforces
loading external XML entities and is by default enabled. If enabled,
<code>RAPTOR_OPTION_NO_FILE</code> and
<code>RAPTOR_OPTION_NO_NET</code> are also checked. All URIs loaded
are also passed through any URI filter, if set by
<code>raptor_sax2_set_uri_filter()</code>.
</p>
<h3>URI class changes</h3>
<p>Added new URI constructor
<code>raptor_new_uri_from_uri_or_file_string()</code>
to build a URI from a URI string or a filename string, normalizing
the result to a <code>file:</code> URI.
</p>
<p>Added
<code>raptor_uri_uri_string_to_counted_filename_fragment()</code> to
turn a URI string to a filename and URI fragment along with string
output string counts.
</p>
<p>Added utility methods for checking if a file: URI or filename is a
file that exists:
<code>raptor_uri_file_exists()</code> and
<code>raptor_uri_filename_exists()</code>
</p>
<h3>WWW class changes</h3>
<p>Added <code>raptor_www_set_ssl_verify_options()</code> to set SSL
verify options.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=469">Issue# 0000469</a>.
</p>
<p>The <code>raptor_www_fetch()</code> call now returns the status
from any URI filter that returns a non-0 response.
</p>
<h3>Build changes</h3>
<p>Added <code>--with-icu-config=</code><em>PATH</em> option
to enable use of ICU for NFC checking.</p>
<p>Requires automake 1.11.2+ for <code>-Wextra-portability</code></p>
<p><code>configure</code> uses <code>AM_PROG_AR</code> to make
automake <code>-Wextra-portability</code> happy.
</p>
<h2 id="rel2_0_6"><a name="rel2_0_6">Raptor2 2.0.6 changes</a></h2>
<p>Fixed expat support which was broken in 2.0.5</p>
<p>Handle libCurl SSL options before 7.16.4 (that's 2007) since old
libcurl is still around on Enterprise (that means old) linux systems.
</p>
<h3>Sequence Changes</h3>
<p>Added utility functions to swap elements, reverse the sequence and
generate permuations:</p>
<pre>
int raptor_sequence_swap(raptor_sequence* seq,
int i, int j);
int raptor_sequence_reverse(raptor_sequence* seq,
int start_index, int length);
int raptor_sequence_next_permutation(raptor_sequence *seq,
raptor_data_compare_handler compare);
</pre>
<h2 id="rel2_0_5"><a name="rel2_0_5">Raptor2 2.0.5 changes</a></h2>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=465">0000465</a>: c99 snprintf usage</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=476">0000476</a>: Add Format URIs to raptor_syntax_descriptions</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=479">0000479</a>: raptor 2.0.4 : -i nquads fails to treat the context term as optional bugs.librdf.org</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=481">0000481</a>: Invalid unicode characters cause raptor to emit infinite output while converting n-quads to n-triples</li>
</ul>
<h3>Parser class changes</h3>
<p>Updated all parser URIs to use the
<a href="http://www.w3.org/ns/formats/">W3C Format URIs</a>
as the primary URIs. Existing URIs become aliases. (Nicholas J Humfrey)
</p>
<p>GRDDL parser: Correctly set the base_uri when resolving the
sheet URI.</p>
<p>N-Quads parser: Make context optional. (Lauri Aalto)
Fixes
<a href="http://bugs.librdf.org/mantis/view.php?id=479">Issue #0000479</a>.
<br />
When guessing formats, make N-Quads always beat N-Triples since
since now all ntriples parse fine with the nquads parser. (Lauri Aalto)
</p>
<p>RDFA parser: fix when building with 64-bit systems to prevent
value truncation.</p>
<p>Turtle parser: now uses the official <em>text/turtle</em> mime
type in the syntax recognizing code.
</p>
<h3>Serializer class changes</h3>
<p>Updated all serializer URIs to use the
<a href="http://www.w3.org/ns/formats/">W3C Format URIs</a>
as the primary URIs. Existing URIs become aliases. (Nicholas J Humfrey)
</p>
<p>Turtle serializer now uses the official <em>text/turtle</em> mime
type in the syntax recognizing code.
Do not generate infinite output when the input Unicode UTF-8 encoding
is bad.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=481">Issue #000481</a>.
</p>
<h3>Unicode class changes</h3>
<p>Added new utility functions for calculating number of Unicode
characters in a UTF-8
string <code>raptor_unicode_utf8_strlen()</code> and getting a subset
of a UTF-8 string <code>raptor_unicode_utf8_substr()</code>:
</p>
<pre>
int raptor_unicode_utf8_strlen(const unsigned char *string,
size_t length);
size_t raptor_unicode_utf8_substr(
unsigned char* dest, size_t* dest_length_p,
const unsigned char* src, size_t src_length,
int startingLoc, int length);
</pre>
<h3>URI class changes</h3>
<p><code>raptor_uri_string_to_relative_uri_string()</code> now
compares URI paths not files. (Joe Presbrey)
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=472">Issue #0000472</a>
</p>
<h3>Build changes</h3>
<p>The library no longer needs <code>trunc()</code>,
<code>lround()</code>, <code>round()</code> or anything else from
libm. Removed the checks for these functions from
<code>configure</code>.
</p>
<p><code>configure</code> no longer enables debug messages by default
for <code>--enable-maintainer-mode</code> but now requires the
<code>--enable-debug</code> option to be given.
</p>
<h3>Other changes</h3>
<p>Records GIT version in the version string when building from GIT
sources with <code>--enable-maintainer-mode</code>. This makes it
clearer when an non-released version is being used.
</p>
<p>Added internal <code>raptor_format_integer()</code> which enabled
the removal of all internal use of <code>snprintf()</code>.
</p>
<p>Added <code>raptor_vsnprintf2()</code> deprecating
<code>raptor_vsnprintf()</code> which does not actually have the
vsnprintf() calling contention. Added <code>raptor_snprintf()</code>
with snprintf() calling convention. Added
<code>raptor_vasprintf()</code> with vasprintf() (GNU) calling
convention.
</p>
<pre>
int raptor_vsnprintf2(char *buffer, size_t size,
const char *format, va_list arguments);
int raptor_snprintf(char *buffer, size_t size, const char *format, ...);
int raptor_vasprintf(char **ret, const char *format, va_list arguments);
</pre>
<p><code>raptor_locator_format()</code> now picks a large enough
buffer size if <code>snprintf()</code> is likely not portable, when
HAVE_C99_VSNPRINTF is not defined.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=465">Issue #0000465</a>
</p>
<p>Internal code style changes for how allocation is done and casting
with new macros.</p>
<blockquote>
<p>RAPTOR_GOOD_CAST: code checks or logic ensures cast will not
truncate</p>
<p>RAPTOR_BAD_CAST: value may be truncated; may require API
change/break. Might be unrealistic e.g. a >4G error message,
qname prefix.</p>
<p>Some good uses:</p>
<ul>
<li>narrowing a known, checked unicode char to a U16</li>
</ul>
<p>Some 'bad' uses:</p>
<ul>
<li>only handing error messages, literal language, qname prefixes of
a max len constrained by int</li>
<li>passing in data to libxml constrained by int max len</li>
<li>locator column field constrained to int size</li>
</ul>
<p>Some bad uses:</p>
<ul>
<li>iostream read_bytes and write-bytes methods return int but could
easily return a lot more in the size_t range (compare to fread).
API change needed.</li>
<li>locator byte field constrained to int size. should be size_t</li>
<li>raptor_nfc_check returns int offset into a buffer that could
be larger</li>
<li>raptor_ntriples_parser_context changed line_length and offset
to size_t</li>
<li>raptor_turtle_parser changed buffer_length to size_t</li>
</ul>
</blockquote>
<p>Updated code to use <code>size_t</code> for sizes such as those
from <code>strlen()</code> and <code>ptrdiff_t</code> for pointer
differences so that on 64-bit architectures, values are not
potentially truncated to size of int.
</p>
<h2 id="rel2_0_4"><a name="rel2_0_4">Raptor2 2.0.4 changes</a></h2>
<p>Issues Fixed:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=308">0000308</a>: undefined reference to round and trunc while cross compiling for mipsel</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=449">0000449</a>: ntriples serializer and parser inconsistent w.r.t. _ in name tokens</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=451">0000451</a>: Incorrect qname definition in TRiG parser</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=455">0000455</a>: Incorrect AVL tree operations. [ with fix ]</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=456">0000456</a>: raptor-2.0.3 fails to build against yajl-2.0.2 API</li>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=457">0000457</a>: raptor-2.0.3 fails to build with curl-7.21.7</li>
</ul>
<h3>Parser class changes</h3>
<p>The <code>raptor_option</code> enumeration gains values for
setting SSL client side certificates:
<code>RAPTOR_OPTION_WWW_CERT_FILENAME</code> for the certificate
filename, <code>RAPTOR_OPTION_WWW_CERT_TYPE</code> for the
certificate type and <code>RAPTOR_OPTION_WWW_CERT_PASSPHRASE</code>
for the certificate passphrase.
</p>
<p><code>raptor_parser_parse_uri_with_connection()</code> (which is
called by <code>raptor_parse_uri()</code>) now uses
<code>raptor_www_set_ssl_cert_options()</code> to turn the parser
options above into settings on the WWW object.
</p>
<p>RDF/JSON parser: Gains support for building with
<a href="http://lloyd.github.com/yajl/">YAJL</a> V2. Note that YAJL
V1 and V2 both install the same library name 'libyajl' even though
they have different ABI and APIs.</p>
<p>TRiG parser: Fixed to support the legal <em>uri</em> <code>:
{</code> ... <code>}</code> syntax naming a graph where the
'<code>:</code>' is optional.
</p>
<p>Turtle parser: Modified to not include the internal
<code>input()</code> function in the lexer which is never needed.
</p>
<h3>Serializer class changes</h3>
<p>N-Triples and Turtle serializers: Now
use <code>raptor_bnodeid_ntriples_write()</code> to always write
legal blank node IDs.
</p>
<h3>WWW class changes</h3>
<p>Added support for <code>raptor_www</code> to handle setting SSL
client certificate options during WWW retrieval.
</p>
<p>Added <code>raptor_www_set_ssl_cert_options()</code> method to set
the SSL client certificates on a WWW object.
</p>
<h3>Other changes</h3>
<p>Make Raptor build against Curl 7.21.7 which removed a header file
that was made an empty file in the libcurl source code on April 26
2004 around version 7.12.0 which is now the minimum version Raptor
supports..
</p>
<p>Fixed an AVL Tree issue during deletion that messes up some pointers.
Patch from 'v-for-vandal'. Thanks.
</p>
<p>Added a utility function
<code>raptor_bnodeid_ntriples_write()</code> to write a N-Triples
blank node ID in legal form, replacing any letters not in the allowed
set.</p>
<p>Expanded GCC warnings and corrected a few internal uses
of <code>int</code> when <code>size_t</code> was meant. Others
remain.
</p>
<p>Reduced stack use of <code>raptor_www_file_handle_fetch()</code>
and <code>raptor_parser_parse_iostream()</code> by moving I/O buffer
to the www or parser objects respectively.
</p>
<h2 id="rel2_0_3"><a name="rel2_0_3">Raptor2 2.0.3 changes</a></h2>
<p>The main change is to add the new main header file
<code>raptor2.h</code>. The new header has been added to allow
applications to be sure they have got the raptor V2 header
(with <code>#include <raptor2.h></code> and not the raptor V1
header file (<code>#include <raptor.h></code>).
The <code>raptor.h</code> header will NOT be removed until the next
major raptor release (V3).
</p>
<h3>Turtle / TRiG parser changes</h3>
<p>Alter the parser to not use a large token stack when parsing TRiG
graphs, enabling the parser to handle much larger files. The parser
still gathers all input into a single memory segment so the maximum
amount of input is probably memory size/3.
</p>
<p>TRiG parser now allows a QName for the graph name.
</p>
<p>Attempted to make the parser handle streaming lexing and parsing
but only partially successful; bison could be made to stream parse
but flex could not be made to stream lex. This meant it could not
be convinced to return a "need more input" response at the end of a
chunk of data and continue lexing later.
</p>
<p>Fix value ownership fix graph name.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=437">Issue #0000437</a>
</p>
<h3>Other Changes</h3>
<p>Raptor was ran through the
LLVM <a href="http://clang-analyzer.llvm.org/">clang</a> static code
analyzer and several issues fixed, mostly in unused variables and in
unlikely error recovery conditions. Some actual potential crash bugs
were found:</p>
<ol>
<li>The workaround for
ancient <a href="http://xmlsoft.org/">libxml2</a> error handling
in <code>raptor_libxml_xmlStructuredError_handler_parsing()</code>
was broken for some time, so that probably means nobody uses old
libxml2.</li>
<li><a href="http://github.com/msporny/librdfa/">librdfa</a> URI
resolving in <code>rdfa_resolve_uri()</code> used unallocated
memory in some relative URI cases.</li>
</ol>
<p>Bison 2.4 is required to build Raptor from GIT source with
no pregenerated files.
</p>
<h2 id="rel2_0_2"><a name="rel2_0_2">Raptor2 2.0.2 changes</a></h2>
<p>Fixed a too strict version checking bug in <code>raptor_new_world()</code>
</p>
<h2 id="rel2_0_1"><a name="rel2_0_1">Raptor 2.0.1 Changes</a></h2>
<p><b>DO NOT USE</b>. Use 2.0.2 which fixes a too strict version
checking bug in <code>raptor_new_world()</code>
</p>
<h3>Parser class changes</h3>
<p>The internal librdfa parser that uses Raptor internals now exports
symbols prefixed with raptor_librdfa so that Raptor can be linked
with the standard librdfa in applications without symbol clashes.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=416">Issue #0000416</a>
</p>
<h3>Serializer class changes</h3>
<p>The N-Quads serializer was fixed to output the graph name in the
fourth column, instead of repeating the object.
</p>
<h3>Internal changes</h3>
<p>Replaced all internal fatal errors that went to
an <code>abort()</code> with regular logged error.
</p>
<h2 id="rel2_0_0"><a name="rel2_0_0">Raptor 2.0.0 Changes</a></h2>
<p>Raptor V2 final release. See the release notes for 1.9.0 and
1.9.1 for the major changes in Raptor V2.</p>
<h3>API changes since 1.9.1 beta</h3>
<p>Added <code>raptor_syntax_description_validate()</code> to public
API to validate and compute counts for syntax descriptions.
Primarily this is for use by Rasqal.
</p>
<p>The <code>raptor_syntax_description</code> now has an array of URI
strings instead of a single one, to allow URI aliasing. This is
primarily for use by Rasqal.</p>
<p>Fixed guessing by URI in
<code>raptor_world_guess_parser_name()</code> which was not
working.</p>
<p>Fixed Issues:</p>
<ul>
<li><a href="http://bugs.librdf.org/mantis/view.php?id=405">0000405</a>: RDFa parser does not handle base href with single quoted value</li>
</ul>
<h2 id="rel1_9_1"><a name="rel1_9_1">Raptor 1.9.1 Changes</a></h2>
<p>1.9.1 is the second beta release of Raptor 2 and intended to be
the last release before 2.0.0.
</p>
<h3>Raptor V1 to V2 upgrading changes</h3>
<p>Improved the <code>upgrade-script.pl</code> raptor V1 to V2
upgrade script to handle changes to enums and macros as well as
handle statement field renaming. Updated the generated documentation
to also include enum and macro changes.
</p>
<p>Added defensive code in each constructor to check the passed-in
raptor world object is a valid Raptor V2 world rather than V1. It
generates a warning once per run of the program.
</p>
<p>The <code>raptor_new_world()</code> function is now a macro that
calls an internal function <code>raptor_check_world_internal()</code>
with a version macro argument to detect when Raptor V2 is invoked with
an inconsistent header and library.
</p>
<h3>AVLTree class changes</h3>
<p>Free the iterator at the end of debug method
<code>raptor_avltree_print()</code>.
</p>
<h3>I/O Stream class changes</h3>
<p>Fix major copying too much error in the internal
<code>raptor_read_string_iostream_read_bytes()</code> memcpy that
could cause crashes - the function always copied the maximum amount
the user requested in the read method even if the string was
smaller.</p>
<h3>Parser class changes</h3>
<p>JSON parser: Made relative URIs option work.
</p>
<p>N-Quads parser: Added. The serializer already existed.</p>
<p>librdfa parser: Updated to latest librdfa GIT
1a1a08c790b7649a7f6c12fb9e40c0d3dbe70481</p>
<h3>Serializer class changes</h3>
<p>Fix <code>raptor_serializer_start_to_iostream()</code> to prevent
crash when this method is used more than once on the same
serializer.</p>
<p>RSS/Atom serializer: Fix crashes with feeds containing entries
with blank node items.
</p>
<h3>Stringbuffer class changes</h3>
<p>Added utility methods
<code>raptor_stringbuffer_append_uri_escaped_counted_string()</code>
and <code>raptor_stringbuffer_append_hexadecimal()</code>.
</p>
<h3>Term class changes</h3>
<p>Deleted <code>raptor_term_as_counted_string()</code> and
<code>raptor_term_as_string()</code>. Since 1.9.0 was an unstable
API, this is allowed.
</p>
<p>Added <code>raptor_term_to_counted_string()</code> replacing
deleted <code>raptor_term_as_counted_string()</code>.</p>
<p>Added <code>raptor_term_to_string()</code> replacing
deleted <code>raptor_term_as_string()</code>.</p>
<h3>URI class changes</h3>
<p>Added convenience methods for constructing URI terms from strings:
<code>raptor_new_term_from_counted_uri_string()</code> and
<code>raptor_new_term_from_uri_string()</code>.
</p>
<p>Use string lengths in equals and comparisons for faster checking.
Use <code>memcmp()</code> instead of <code>strncmp()</code> when
lengths are known and the same.
</p>
<h3>WWW class changes</h3>
<p>The CURL WWW module now looks for and uses the HTTP response
<code>Content-Location:</code> header to get the base URI for content
retrievals. This allows these base URIs to be used in parsing
content retrived from URIs.
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=402">Issue #0000402</a>
</p>
<h2 id="rel1_9_0"><a name="rel1_9_0">Raptor 1.9.0 Changes</a></h2>
<p>1.9.0 is the first beta release of Raptor 2. There may be changes
and additional releases before version 2.0.0 with the final stable API.
</p>
<p>This is a major update and cleanup to the Raptor API and ABI with
additions, removals and changes. There are also major restructurings
of the internal code and cleanups. There are also some new features
in the form of additional APIs, new serializers and parsers.
</p>
<p>The details of the additions, removals and changes of functions,
structures, typedefs and enums are listed in the
<a href="http://librdf.org/raptor/api/">Raptor 2 API reference manual</a>
section on
<a href="http://librdf.org/raptor/api/raptor-changes.html">Changes between raptor 1.4.21 and 1.9.0</a>.
The <a href="UPGRADING.html">upgrading document</a>
explains how to upgrade existing code that uses the V1 APIs to use
the new APIs.
</p>
<p>The major changes in this release are:</p>