6fab555dcec402d2c0fd61c397baff2d4cad5826
[yaz-moved-to-github.git] / CHANGELOG
1 Possible compatibility problems with earlier versions marked with '*'.
2
3 Added Segment handlers for backend server.
4
5 Added Zmbol/Zebra administrative functions to YAZ client.
6
7 Added multi threading for frontend server when POSIX Threads are available.
8 Starting the server with option -T enables multi-threading.
9
10 --- 1.6 2000/03/03
11
12 Added configure option --enable-comp/disable-comp to control use
13 of YAZ ASN.1 compiler. Use --disable-comp to use the old *coders
14 located in sub directory asn.
15
16 YAZ ASN.1 compiler renamed to yaz-comp in sub directory. It's installed
17 in ${exec_prefix}/bin along with the other programs yaz-client and
18 yaz-ztest.
19
20 GNU automake used to maintain makefiles.
21
22 Added several OID's.
23
24 Changed retrieval module so that we can load records with no abstract
25 syntax defined. Tagpaths in these records are fully composed of string
26 tags.
27
28 Implemented ISO ILL protocol. Refer to stuff in sub directory ill.
29
30 --- 1.5 1999/12/10
31
32 On UNIX, the generated makefile now supports a proper 'make install'.
33 The prefix can be set via GNU configure to set the install location
34 (default is /usr/local).
35
36 * YAZ programs client and ztest were renamed to yaz-client and
37 yaz-ztest to avoid conflicts when users install YAZ in "standard"
38 locations, such as /usr/bin,/usr/local/bin,etc.
39
40 * YAZ Header files were moved from include to include/yaz. YAZ Header
41 files are referred to as include <yaz/log.h> rather than <log.h>.
42 The YAZ include path (-I ..) is therefore the same as before. Programmers
43 should update their #include statements or use -Ipath/include/yaz
44 instead. The main motivation for doing this change is that YAZ header files
45 can be installed in "standard" locations /usr/include,/usr/local/include 
46 without introducing conflicts, since ALL YAZ header files are stored
47 in subdirectory yaz (under /usr/include for example).
48
49 Compilation of YAZ for WIN32 is now handled by an nmake-style makefile 
50 rather than project/workspace files. We switched because project files
51 are incompatible between Visual C++ 5 and 6. Refer to windows.txt for
52 details.
53
54 Changed name of logging function, logf, to yaz_log, to prevent name
55 clash with some math-log functions. The YAZ header log.h defines logf
56 to yaz_log (#define) so there should be no incompatibilities by this
57 modification.
58
59 Added bend_start/bend_stop handlers for server. These handler are
60 called on start/stop of server. For windows they are called whenever
61 a service is started/stopped.
62
63 * YAZ now auto-generates decoders/encoders for the Z39.50 protocol using
64 a fairly small ASN.1 compiler written in Tcl. The compiler is located
65 in util/yc.tcl. The auto-generated C code structures are, in a few
66 cases, incompatible with the old decoders. There are differences in the
67 following C structures Z_DiagRec, Z_External, Z_SortRequest, Z_SortResponse,
68 Z_AttributesPlusTerm, Z_ProximityOperator, Z_DefaultDiagFormat.
69 The preprocessor variable ASN_COMPILED is defined when the compiled
70 ASN.1 is being used. Encoder/decoder routines as well as the Z39.50
71 protocol ASN.1 is located sub directory <tt>z39.50</tt>. If you
72 wish to use the old encoders/decoders you can specify --disable-yc
73 for configure.
74
75 Assigned OID for old DB Update (VAL_DBUPDATE0). Updated YAZ compiled
76 version so that it supports both new - and old version of DB Update
77
78 * Added 'name' parameter to ODR encoder/decoder routines to facilitate
79 pretty ODR print. Updated whole Z39.50 encoder/decoder to reflect the
80 change. The name parameter can be set to 0 in which no name is specified
81 for the construction. The macros odr_implicit and odr_explicit sets name
82 parameter to zero for the construction involved. New macros
83 odr_implicit_tag and odr_explicit_tag are similar to the others,
84 except that a name parameter is added. For programmers' that don't use
85 ODR they probably only need to change the call to z_APDU and z_External.
86
87 Added access control facility by interfacing the TCP wrapper library.
88 YAZ automatically attempts to find the TCP wrapper Library (-lwrap) and
89 tcpd.h on Unix systems. For the server, option -d<daemon> specifies the
90 name of the daemon and enables the access control as specified in
91 hosts.allow/hosts.deny. Refer to man pages tcpd(8) and hosts_access(5).
92
93 Fixed memory leak in ccl_find_str and ccl_qual_rm. Thanks to Hans van
94 den Dool <H.M.vdnDool@kub.nl>.
95
96 Added reference ID parameter to most functions in server API - refer
97 to backend.h. Thanks to Hans van den Dool <H.M.vdnDool@kub.nl>.
98
99 Changed name of ccl library to libccl.a (was ccl.a).
100
101 Fixed bug in decoder for Explain (Category TargetInfo).
102
103 Added support for GNU readline in client. Thanks to Jacob Poulsen
104 <ja7@dbc.dk>. GNU configure attempts to detect if readline is available.
105
106 * CHANGED DEFINITION OF ES: UPDATE (INCLUDING THE OID) to reflect the
107 new definition from the ZIG. NOTE THIS IF YOU HAVE AN UPDATE
108 IMPLEMENTATION! This change was made to the development version before
109 the ZIG decided to retract the amendment. If any users MUST be
110 compatible with the original Update definition, PLEASE CONTACT US, and
111 we will include a separate definition corresponding to the old Update
112 ES. Note that because of the change to the ASN.1 of the
113 TaskPackageRecordStructure we cannot define a single structure that
114 will support both versions.
115
116 * Added const modifier to buffer parameter for some ODR/BER encoding
117 routines: ber_dectag, ber_declen, odp_more_chunks, completeBER,
118 completeWAIS, odr_dumpBER.
119
120 Fixed bug in client.c which caused a crash when a scanResponse didn't
121 contain positionOfTerm.
122
123 * Fixed inconsistency in the ScanResponse/ListEntries protocol. This
124 * will cause an error in a client if a non-YAZ target sends both a
125 * list of Scan entries and non-surrogate diagnostics.
126
127 Retrieval module enhancements. Tag sets may be typed in the reference
128 to it. From the .abs-file the "tagset" directive takes a third optional
129 integer type for the tag set referenced. From a .tag-file the "include"
130 directive takes a third optional type as well. The old "type" directive
131 in the tag set itself is still recognized but acts as the default type
132 for the tag set.
133
134 Backend interface change. Individual Scan terms returned from bend_scan
135 may also be tagged as Surrogate Diagnostics. Refer to struct scan_entry
136 in include/backend.h.
137
138 Retrieval module enhancements. Multiple tag sets and attribute sets may
139 be specified in abstract syntax specs. Revised the error/warning for
140 logging messages reported by the retrieval module when reading the
141 various spec files.
142
143 Object Identifier system (oid_..) changed. The API is backwards
144 compatible but the oid-routines now allocates new OID's when needed.
145 Raw OID's may be specified in oid_getvalbyname.
146
147 YAZ now uses GNU configure to generate Makefile(s).
148
149 * Minor changes in some of the member names of DeleteResultSetRequest and
150 DeleteResultSetResponse. See include/proto.h.
151
152 * Changed some C definitions regarding EXPLAIN record syntax (prt-exp.h)
153 and added member 'languages' in TargetInfo (which was missing).
154
155 Changed the way attribute sets are handled in the retrieval
156 module. These are now cached, just like the abstract syntaxes
157 (schemas).
158
159 Changed YAZ so that it links with compiled ASN.1.
160
161 Added Explain-schema definitions and mapping routines. The following
162 Explain categories have been implemented: AttributeDetails,
163 AttributeSetInfo, DatabaseInfo, CategoryList and TargetInfo.
164
165 Fixed minor bug in Windows version of Server Library.
166
167 --- 1.4pl2+ 1998/4/17 (Released with Zebra)
168
169 Added Extended Services to server (backend.h). Thanks to Charles Woodfield.
170
171 Added EXTERNAL: UNIverse Resource Report (non-standard).
172
173 Implemened odr_enum and odr_set_of functions to handle ASN.1 types
174 ENUMERATED and SET OF.
175
176 * Added 'const' to some of the char pointer arguments for the
177 functions, data1_read_node, data1_getelementbytagname,
178 data1_insert_taggeddata, data1_getesetbyname, data1_getelementbyname,
179 data1_get_absyn.
180
181 Fixed bug in data1_insert_taggeddata - the last_child member of
182 parent wasn't initialised.
183
184 * Changed data1_read_record and data1_read_node so that the supplied
185 "SGML"-buffer is read-only. In particular the resulting data1 - tree
186 doesn't refer to any parts of the "SGML"-buffer.
187
188 Fixed bug in server library (Windows version of statserv_remove).
189
190 * Changed code so that it compiles as C++. The type definition
191 of Odr_fun which is a member of Odr_arm was changed. The result is,
192 that an explicit typecast is needed for the fun pointer when
193 using Odr_arm - as in:
194     {1, -1, -1, Z_IdAuthentication_idPass, (Odr_fun)z_IdPass},
195
196 Updated TagSet-G and -M definitions (tagsetm.tag and tagsetg.tag).
197
198 Implemented the new structured date and time definition as approved
199 by the ZIG. Added schemaId element to the specificTag in Espec-1
200 (also approved at the last ZIG). Thanks to RVDM.
201
202 Added some Object identifiers (RVDM).
203
204 Changed the Update Extended Service (RVDM).
205
206 Added command "refid" to client which specifies referenceId for
207 the following requests.
208
209 Implemented extended service handling for server. See ztest.c
210 for an example as well as backend.h. New handlers are registerd
211 in the Init handler.
212
213 * Changed interface for sort in server.
214
215 Added new members to statserv_options_block. It allows a server
216 to read options from another source than just the command line. Thanks
217 to Charles Woodfield.
218
219 * Changed definition of Z_Triple in file prt-grs.h - member boolean
220 renamed to zboolean. Some C++ compilers complained about the name.
221
222 Minor changes to gils.abs. Added index 's' (sort) on title
223 and date/time-last-modified.
224
225 --- 1.4pl2 1998/1/30
226
227 Fixed bug in server library regarding inetd mode (-i). This bug
228 was introduced by release 1.4.
229
230 --- 1.4pl1 1998/1/29
231
232 Added sort facility in client and backend server interface.
233
234 Fixed problem with dependencies in Makefile(s).
235
236 Fixed bugs for encoders/decoders of extended services and 
237 SearchInfoReport.
238
239 Implemented sub-tree feature for schemas. Sub-trees are
240 referenced in *.abs-files. See explain.abs for an example
241 of the use of this feature.
242
243 Modified bib1.att; local attributes for ANY didn't include
244 ANY itself (only affects use of the retrieval module).
245
246 Fixed bug in plain SGML reader in function data1_read_node:
247 tags with prefix "var" was incorrectly interpreted as variants.
248
249 Added feature "sub-schemas" to enable references to - and definitions
250 of - group of elements.
251
252 * Removed member parent from type data1_element (in data1.h).
253
254 Implemented function odr_nullval() that returns the value of
255 ODR_NULLVAL.
256
257 * Removed member num_children from data1_node (in data1.h).
258
259 Made NT service interface part of the server library. The
260 function statserv_main uses the NT service when required and
261 calls the statserv_start / statserv_close routines.
262
263 Routine zget_SearchRequest and zget_PresentRequest fills
264 resultSetName/Id member with "default" instead of "Default".
265
266 Fixed memory leak in server. Request queue member wasn't freed.
267
268 Fixed nmem_exit so that memory is freed.
269
270 --- 1.4 1997/10/2
271
272 Revised the CCL parser utility to be thread safe.
273
274 Added function, oid_ent_to_oid, to replace the function 
275 oid_getoidbyent, which is not thread safe.
276
277 * Added nmem_init and nmem_exit to initialize and release
278 NMEM resources. Function nmem_init should be called once in the
279 initial thread before NMEM/ODR is used. statserv.c and client.c
280 have been changed accordingly. The change was necessary to make
281 NMEM thread safe. The NMEM memory pool is shared amongst threads
282 in a process. Unix-based applications will still work fine without
283 calling this.
284
285 Added NT Services interface for the the Z39.50 (statserv) Server. 
286 Refer to the ztest.c source on the usage.
287
288 Windows 95/NT port using MSVC5.0. Project files are included in the
289 distribution.
290
291 * Defined new 'global' handle for the retrieval (data1) system. The
292 new handled, data1_handle, describes the state of the data1 system.
293 This handle is passed as first argument to virtually all
294 data1 related routines. The functions data1_create and data1_destroy
295 creates and destroys a data1 handle respectively.
296
297 Added ODR encode stream member to all backend request structures
298 init, search, scan etc. This stream should be used to allocate all
299 memory used for the response when thread safe operation is needed.
300
301 Changed the comstack utility, cs_addstr, to be thread safe. The
302 returned hostname string returned by the function is now part the
303 COMSTACK instance.
304
305 Added comstack utility, cs_straddr, which replaces the tcpip_strtoaddr
306 function. The cs_straddr takes a COMSTACK handle as argument, so this
307 function must be used after cs_create and before bind/connect.
308 This function is thread safe.
309
310 Moved test server to 'ztest' directory - generic server code still
311 in 'server' directory.
312
313 Made prefix query (pquery.c) utility thread safe.
314
315 Added new function modifier YAZ_EXPORT to 'export' public DLL
316 functions when using windows (see include/yconfig.h).
317
318 Added definitions to the OID database (util/oid.c) (RVDM).
319
320 Added new BIB-1 diagnostic messages to the handler diagbib1_str.
321
322 Added call to ccl_rpn_delete in client program.
323
324 Added ODR argument to ccl_rpn_query and ccl_scan_query to provide
325 release of RPN structure.
326
327 Added support for C++, headers uses extern "C" for public definitions.
328 With input from RVDM.
329
330 In handling of SEQUENCE OF: Counter set to zero when SEQUENCE OF is absent.
331 Thanks to Ronald van der Meer (RVDM).
332
333 Added initializers (zget_ routines) for a number of PDUs. Thanks to RVDM.
334
335 Added support for private extensions to the OID database
336 (oid_setprivateoids()). Thanks to RVDM.
337     
338 Added optional, physical ANY (key replication)
339
340 Fixed null-reference problem in GRS-1 output filter.
341
342 Proximity operator added to Prefix Query Format (PQF).
343
344 In test client command "base" accepts multiple databases.
345
346 Fixed bug in cs_close stack that caused trouble with WINSOCK.
347
348 --- 1.3 1996/10/11
349
350 Fixed tagging bug in ResourceReportResponse PDU encoder/decode.
351
352 Smallish bug-fixes in the new encoders/decoders (explain).
353
354 Bug fixed in DeleteRequest.
355
356 Fixed tagging bug of type 101 query in SearchRequest-Query PDU encoder/decoder.
357
358 Fixed tagging bug in ResourceReportResponse PDU encoder/decode.
359
360 Added SOIF syntax (using private OID for now) to retrieval module and client.
361
362 Added Update extended service.
363
364 Added SearchResult-1 additional info structure.
365
366 Added optional CCL (ISO8777) interpreter as separate module. Available
367 in linemode client.
368
369 --- 1.2 1996/6/10 (1st anniversary release)
370
371 Added Summary record syntax. Lightly tested.
372
373 Added OPAC record syntax. Untested.
374
375 Added ResourceReport service encoders/decoders. Untested.
376
377 Fixed bug in z_Unit - wrong tagging on unitSystem.
378
379 Fixed bug in the DiagRecs decoder.
380
381 Added options for max PDU size and session timeout to frontend-server.
382
383 Added documentation of query-language parsers and other supporting utilities.
384
385 [frontend-server] Added Attribute set to the bend_scanrequest API.
386
387 [frontend-server] NextResultSetPosition was sometimes set incorrectly when
388 surrogate diagnostics were generated.
389
390 [retrieval] Allow multiple local values for attribute.
391
392 [retrieval] Allow multiple attributes per element in .abs files. index type.
393
394 [retrieval] Added Summary tagset, abstract syntax, and d1-node/ASN filter.
395
396 --- 1.1pl2  1996/4/10
397
398 Minor changes, mostly specific to Zebra's requirements (retrieval)
399
400 --- 1.1  1996/2/20
401
402 Repaired bug in frontend server when running multiple listening
403 endpoints in dynamic mode.
404
405 z_External() now won't break if a known, ASN.1 value comes encapsulated
406 in an octet-string. The value will pass through unmodified in an Odr_oct.
407
408 Added a bit of code to the demo client to decode & display
409 ASN.1-structured records represented in the octet-aligned branch of
410 the EXTERNAL CHOICE. Thanks to CAS for prodding us to finally do this.
411
412 Added z_ext_getentbyref() to the ASN module. Doc updated.
413
414 * Completed the SCAN definition in the ASN module. This may break SCAN
415 code based on older YAZ-versions at compile-time. The fix is easy -
416 look in proto.h.
417
418 * Added 'displayTerm' and OtherInformation to the TermInfo structure
419 under the SCAN definition. Remember to initialize this, server-people.
420
421 Comstack should now support the WAIS protocol in TCP/IP mode. Note
422 that this does not extend to ODR and ASN.
423
424 Comstack allows insertion of established socket (primarily for
425 inetd-operation of servers). Doc updated.
426
427 Front-end server can now start from the inetd in TCP mode. Doc
428 updated.
429
430 --- 1.0pl4 1996/1/24
431
432 Added Sort PDU.
433
434 Fixed small problem in SUTRS-filter. A newline was sometimes inserted before
435 the rank and record number.
436
437 Adjustments to the frontend server.
438
439 Fixed diagnostic BER dumper. It ignored the file argument.
440
441 --- 1.0pl3 1996/1/2
442
443 Various changes to retrieval module.
444
445 Changed the union discriminators of the protocol files from enums to
446 ints paired with #defines.
447
448 *Changed oident.class to oident.oclass to avoid a reserved word in C++
449  compilers.
450
451 *Changed operator in the RPN structure to 'roperator', again to avoid a
452  conflict with C++.
453
454 Fixed problems in Explain decoders/encoders.
455
456 --- 1.0pl2 1995/12/6
457
458 Memory bug in log module fixed.
459
460 --- 1.0pl1 1995/12/5
461
462 Occasional malloc() of 0 bytes fixed in d1_espec.c.
463
464 Bug in Explain DatabaseInfo module fixed.
465
466 Some '\r' snuck into one or two of the ret'l config tables. A curse on Windows.
467
468 --- 1.0 1995/11/28
469
470 The shift to v1.0 signals that we now consider the *core* functionality
471 of YAZ reasonably stable (the core being more or less equivalent to
472 Z39.50-1992). Some of the really nifty v3 stuff is still not heavily
473 tested (Explain not at all - though that will happen soonish).
474
475 Minor changes to code to support Windows port.
476
477 Various minor changes after we're getting to use GRS-1 & co. more.
478
479 Added Espec-1 format.
480
481 Added VisibleString field body type to GRS-1. It is illegal acc. to my copy
482 of the protocol and it cannot be selected when encoding (maps into 'string'
483 when decoding). Needed to talk to some servers.
484
485 Demo client can request simple element set names.
486
487 Added Diagnostic Format encoders/decoders.
488
489 Added simple Close handling to frontend server (no hooks for resource
490 reporting yet), and demonstration client.
491
492 Added cs_addrstr() command to COMSTACK to retrieve peer hostname/address.
493
494 --- 1.0b3 1995/08/24
495
496 Fixed bug in the frontend-server. The numberOfRecordsReturned field was
497 handled incorrectly when records were requested in the searchResponse. This
498 will only affect you if you use the frontend-server.
499
500 Added GRS-1 encoders/decoders to the service-level API. Lightly tested.
501 Test-client will ask for and print GRS1. Ztest will return dummy records
502 on request.
503
504 Added Explain encoders/decoders to the service-level API. Untested.
505
506 Added Extended Services: Item Order encoders and decoders to the Service-
507 level API. Untested. We could use a recent copy of the pertinent bits
508 of the ILL protocol to add those bits.
509
510 Added diagnostic format 1 encoders/decoders to the service-level API.
511 Untested.
512
513 Moved pretty-printing of structure-wrappers ({..}) from odr_seq.c to
514 odr_cons.c, which causes a more correct output.
515
516 Fixed handling of searchRequest in frontend server. NextResultSetPosition
517 was always set to 0 when no records were requested in the searchRequest.
518
519 * Added better external-handling. This shouldn't harm old code that
520 *encodes* externals. It can break code that looks for a
521 'single-ASN1-type' representation, since those types that are known
522 are now decoded immediately. Look at the SUTRS sample code in
523 seshigh.c and client.c. Documentation updated.
524
525 Handling of structured records in bend_fetchresponse. Length -1 marks
526 structured record, type is deduced from format field.
527
528 --- 1.0b2 1995/06/27
529 Fairly quick maintenance release to add SUTRS support.
530
531 Fixed handling of SUTRS records in the demonstration client.
532
533 * Added format field to the bend_fetchrequest and bend_fetchresponce
534 structures of the backend API (frontend server). When the record is
535 returned, the value of the format field is mapped to an OID. The
536 value VAL_SUTRS will also cause a slightly different ASN.1 packaging
537 of the record. The special value VAL_NONE in the bend_request means
538 that no specific format was requested by the client. Documentation
539 updated accordingly. Test server (ztest) will return a fixed dummy
540 SUTRS record if your client requests SUTRS.
541
542 Documentation updated accordingly.
543
544 You can now set external libraries and RANLIB support in the top-level
545 Makefile.
546
547 --- 1.0b 1995/06/19
548 First public release.