File: Changelog

package info (click to toggle)
libmawk 1.0.4-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,200 kB
  • sloc: ansic: 26,979; awk: 1,154; yacc: 1,054; makefile: 487; sh: 365
file content (319 lines) | stat: -rw-r--r-- 22,212 bytes parent folder | download
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
Changelog for libmawk
~~~~~~~~~~~~~~~~~~~~~
libmawk 1.0.4 (released: 2024-03-11, r1333)
	[libfawk] -Fix: potentially uninitialized local variable in call-pre that may cause problems with LTO
	[libmawk] -Fix: missing include for stdio in makescan (that uses printf)
	[doc] -Add: in fact libmawk can be used in any language that can use libraries written in C
	[doc] -Add: webpage main: explain what libmawk is and cross link to libfawk (mainly because of the license)

libmawk 1.0.3 (released: 2021-07-21, r1328)
	[build] -Fix: move fstool detection from target to host - needed only for installation
	[build] -Fix: suppress warning on non-existing optional /local/nofork
	[build] -Fix: make install over a new version over an old version shouldn't fail on lib symlink creation
	[build] -Add: no-fork configure-time option
	[vio] -Fix: missing extern caused multiple definitions of the same variable for vio_fifo

libmawk 1.0.2 (released: 2019-06-22, r1318)
	[core] -Fix: C function calls with uninitialized variables: not sure if array or not, delay resolving it until all the script is parsed so we see if the symbol is an array
	[build] -Fix: missing make uninstall
	[doc] -Add: example (7libmawk)
	[doc] -Fix: manual header sections match manual file name sections (submitted by Bdale)

libmawk 1.0.1 (released: 2019-02-26, r1307)
	[build] -Fix: don't daisy-chain so symlinks (debian patch applied)
	[build] -Add: install (3) and (7) manual pages
	[build] -Add: scconfig --libarchdir, for /usr/lib64
	[build] -Add: install awklib in non-arch-dependent lib dir
	[doc] -Add: AUTHORS file
	[doc] -Update: COPYING: fsf address and formatting
	[libmawk] -Add: handle --help and --version
	[da_bin] -Fix: don't depend on sizeof(long) == 4
	[math] -Fix: if the result of non-NaN arithmetics is nan in emulated nan, rather make it DBL_MAX so it doesn't look like NaN
	[math] -Fix: protect all basic math functions from nan input in emulated nan setup
	[math] -Fix: for systems with unsafe NaN: manual atan2 arg validation
	[math] -Fix: print and printf treats nan specially to make sure "nan" is printed on all platforms (including emulated NaN)
	[math] -Fix: emulated nan strtonum: set endptr propery on nan
	[math] -Fix: when there's no safe nan support, manual convert "nan" to nan on str->num conversion
	-Cleanup: replace #warning with portable macro

libmawk 1.0.0 (released: 2018-11-11, r1276)
	[API] -Change: resume capable function call entries
	[build] -Fix: make clean should remove custom C test objects and executables
	[build] -Fix: incomplete install headers list
	[build] -Add: Makefile variable for selecting zmalloc alternatives
	[build] -Add: optional DESTDIR for debian
	[build] -Add: --prefix, --debug, --symbols
	[build] -Add: help
	[build] -Chnage: upgrade to tmpasm and latest version of scconfig
	[build] -Add: optional support for soname
	[build] -Change: use $(MAKE) instead of make in central Makefiles for parallel build
	[build] -Add: detect -rdynamic
	[core] -Change: extend mpow2 for covering new celltypes
	[core] -Cleanup: rename _STOP and _RANGE to _RANGE_STOP and _RANGE_CHK to make their purpose more clear
	[core] -Fix: return read error in getline doesn't fall in infinite loop in fill buff anymore
	[core] -Add: MAWK_MEM_PEDANTIC compile time option; when set, try to free all allocation instead of letting zmalloc catch them all
	[core] -Fix: don't free the hash before freeing argv and others
	[core] -Fix: make sure code blocks are free'd only once, but are really free'd
	[core] -Fix: memory leak when initializing argv
	[core] -Fix: let mawk_delete() free arrays, don't manually do that on argv
	[core] -Change: let mawk_delete() free user function
	[core] -Change: fin is under files - higher level code should do all access through the file infra
	[core] -Fix: FIN is only about buffering, no open/close should go through that API
	[core] -Fix: reference count vf structs since one vf might be open multiple times from FILE_NODEs (for input and output) and should be destroyed only once
	[core] -Fix: closing all files, not only output files, is not a pedantic-mem feature - not doig it could lead to leaking fds and other resources even if zmalloc pools are freed centrally
	[core] -Fix: there is only one way files are closed, only one code is needed
	[core] -Fix: mawk_fill_buff returns a signed long for indicating temporary error (fixed for 64 bit)
	[core] -Fix: rename state field userdata to func_userdata to make the purpose more clear
	[core] -Add: ctx_userdata intended for the host app for storing whatever data, per context
	[core] -Add: have a field in the state struct for the C function being called back so that subsequent execute()s may know about that
	[core] -Fix: memory leak: free data of c function calls compiled into the code at uninit
	[core] -Fix: C89 fixes (func-data ptr conv through union, don't use strcasemp(), strdup, snprintf, //, vararg macros)
	[core] -Fix: wrong arg passed to isnan - cell instead fo double value
	[core] -Fix: vio fclose survives if there's no close function available (double close?)
	[doc] -Add: short desc about the vm
	[doc] -Add: explain how execution/resume works
	[doc] -Add: describe deep recursion
	[doc] -Add: minimalistic install
	[example_apps] -Add: blocking fifo test also tests bifunct getline in an user function
	[example_apps] -Add: make sure to demonstrate how the code is suspended even in user functions
	[example_apps] -Update: 15_call for the new function call API
	[example_apps] -Add: example on run limit resume
	[example_apps] -Add: central Makefile that runs all examples
	[example_apps] -Add: call a c function from c using awk's func call (demonstrate that awk and c functions should not make any difference)
	[example_apps] -Fix: hash_re won't init std pipes twice
	[example_apps] -Fix: custom vio test sets up pipes correctly and closes the hass from the app's end of the deal at the end
	[example_apps] -Add: better explanation of the c_func_call example and hook it in the all-test-chain
	[libmawk] -Fix: C function call from execute with new function call conventions
	[libmawk] -Fix: call_functionp increases sp before push else the stack pointer points to the wrong place
	[libmawk] -Fix: restore sp on function call failure
	[libmawk] -Fix: before closing stdio on awk side, close stdin on app side to make sure both ends can be closed
	[libmawk] -Fix: do not leak function arguments already pushed on stack if an awk function call fails due to bad arguments
	[libmawk] -Fix: allow c functions to be called using mawk_call_function*()
	[libmawk] -Fix: don't close stdin if it's not open
	[libmawk] -Fix: don't use strdup() for c function reg
	[libmawk] -Fix: don't close non-fifo stdin as fifo
	[libmawk] -Fix: priting uninitialized cell should work and should result in empty string
	[libmawk] -Add: wants_to_exit flag so that a libmawk caller knows a script wants to exit
	[libmawk] -Add: function call API with cell argc/argv
	[parser] -Fix: really reset the parser stack when it gets freed - used to segfault for two includes on the topmost level
	[parser] -Fix: allow excess newlines in the main context - this fixes a corner case around multiple includes
	[regression] -Add: test for bifunct call()
	[regression] -Add: test for acall() (dynamic call with array as argument)
	[regression] -Add: test for stack grow on deep recursion
	[regression] -Add: test program for awk function call corner cases
	[regression] -Add: libmawk corner case test base
	[regression] -Fix: libmawk func call test diag messages are more clear on what's wrong or good
	[rexp] -Fix: infinite loop bug (gawk test noloop1 and noloop2) - contributed by Thomas E. Dickey as a mawk fix
	[vio] -Fix: set eof flags on fifo creation (fixes a conditional jump on uninited var bug)
	[vio] -Fix: closing FIN closes the vio layer even if fin buffer had not been initialized
	[vio] -Fix: close vf throug FIN to make sure buffers are also freed
	[vio] -Fix: simpler common header with refco and who-knows-what in the future
	[vio] -Fix: initialize refco to 0
	[vm] -Change: avoid recursive calls to execute() on plain hardwired awk function calls
	[vm] -Change: wants_to_ret is execution state instead - need to remember whether we are running range1 or range2
	[vm] -Fix: leak in function return value stack handling
	[vm] -Add: new convention in bi_funct calling: return stack may be a directive for executing an user functioin (for bi_call and bi_acall)
	[vm] -Fix: mawk_bi_call() and bifunct acall() follow the new no-recurse calling convention
	[vm] -Add: new low level c->awk call functions trying to follow the no-recurse execute_() conventions
	[vm] -Move: execute API into new execute.h
	[vm] -Add: a separate execution exit status for exit()
	[vm] -Add: execution run limit and resume
	[vm] -Fix: bi_funct getline can indicate 'nomore' instead of eof
	[vm] -Fix: properly save and restore old_stack_base and old_sp on stack danger (stack growth)
	[vm] -Cleanup: remumber types (continous numbering)
	[vm] -Add: more stack-related cell types and make room for future non-string additions
	[vm] -Fix: compare() returns double so that nan-checks can be performed
	[vm] -Fix: error return with value from execute()
	[vm] -Fix: make MAWK->pow big enough and make it safe (need to be unsigned long for these values and for the bit ops)


libmawk 0.10.1 (released: 2014-07-11, r1056)
	[compiler] -Fix: zero-offset bug in jmp push (xref test crash)
	[build] -Add: make test should run the standard regression tests; do not run tests automatically on build
	[core] -Add: zfifo: generic fifo implemented using zmalloc/zfree
	[core] -Add: mawk_file_find() has a create flag that can disable creating a new file node - useful for forcing existing/open files
	[core] -Cleanup: move fin struct to fin.h
	[core] -Cleanup: rename FIN to mawk_input_t for naming consistency
	[core] -Fix: rewritten mawk_FINgets - cleaner code that is non-blocking-safe
	[core] -Fix: zrealloc() should not crash if old ptr is NULL
	[core] -Fix: safer vf close, close outputs only in uninit, when EXIT has finished for sure
	[vio] -Fix: input is always fd, output is always FILE *; remove fgets and stdin related API
	[vio] -Clenaup: cleaner ways recognizing "/dev/std*"
	[vio] -Add: support for /dev/fd/xxx (fdopen() wrapper)
	[vio] -Add: an extra layer to dispatch vio calls - multiple vio implementations can coexist
	[vio] -Add: virtualize vio init (non-per-file vio hooks); use MAWK->vio_init instead of hardwired vio_orig (so that vio_orig can be omitted)
	[vio] -Del: setbuf from API - this callback was a hack, now all done by the call that sets up stdio
	[vio] -Change: replace is_stdouts with a more generic mark_no_close hook
	[vio] -Fix: use zmalloc/zfree for the mawk_vio_t allocations
	[vio] -Add: a generic fifo implementation that also replaces the artificial FIN buf
	[regression] -Cleanup: remove test/ and convert all shell script based tests to make-based tests in regression/
	[tools] -Fix: find_globals uses the right dir
	[tools] -Fix: sym prefix validator won't complain for main()
	[API] -Add: file name validation hook
	[API] -Add: call to register a file by name:type and vio handle in the high level list of files; also sets up input buffering as needed
	[API] -Add: call to close the default input fifo (sending eof to the script)
	[API] -Add: convenient stdio-init call for multi-staged init
	[example_app] -Add: custom output pipe hack examples and update pipe in buffer fill examples with all possible corner cases
	[example_app] -Add: file name validation and vio hook examples


libmawk 0.10.0 (released: 2014-06-26, r937)
	Major changes in core, mostly for virtual arrays:
		[array] -Add: introduce new VM instructions for all array-element-write operations and split the lvalue rule of the grammar; besides being new instructions, they do the same in the execution switch as before
		[array] -Add: virtualize array operations
		[array] -Add: virtual, per instance ENVIRON[] that copies environ[] upon the first access and affects exec()
		[array] -Del: ST_ENV: ENVIRON[] is not a global special case anymore, just a builtin array with a different implementation
		[core] -Fix: replace "short int type" and a bunch of C_ macros for cell type with a proper enum
		[core] -Add: macro option for cell operators for speed
		[core] -Fix: set ERRNO in fin after a read error
		[core] -Cleanup: mawk_ prefix zmalloc, zfree, ZMALLOC, ZFREE and a lot of other constants and macros
		[init] -Add: a flag for indicating that it is ok for initialize_argv() to end up without a script
		[dump] -Fix: print the code of illegal instructions
		[dump] -Add: da_text: use blank lines to separate blocks: functions, BEGIN, MAIN, END
		[dump] -Change: da_text: after user functions, dump code in BEGIN-MAIN-END order - it is more intuitive this way
		[dump] -Add: text dump includes a summary of the global symbol table
		[dump] -Change: introduce -W dumpsym for dumping symbols independently of dumping code
		[da_bin] -Fix: properly save/load C_SNULL and C_SPACE (special split argument types) to/from binary dump
	API CHANGES affecting libmawk:
		[core] -Clenaup: rename STRING to mawk_string_t
		[core] -Clenaup: rename CELL to libmawk_cell_t
		[core] -Change: use an union instead of dval in CELL, to make room for other data types
		[core] -Add: new cell type C_ARR_REF (should be execute()-internal); an array reference by name and index (instead of pointer to a cell)
		[API] -move parsing the script from init stage1 to stage2 to give the host app a chance to inject things into the context before any code is parsed
		[API] -Change: get_var should return a read-only CELL - direct modification of the cell is a bad idea due to possible side effects required at write
		[API] -Fix: libmawk_print_cell shall be called with the context (mawk_state_t) as any other call in the API
		[API] -Change: new, easier-to-use c-func calling conventions and helpers
		[array] -Cleanup: rename ARRAY to mawk_array_t
	New libmawk API features:
		[API] -Add: helper functions to return the numeric value of a cell
		[API] -Add: an easy way to set a cell to empty
		[API] -Add: high level array set_at calls and scalar set calls

libmawk 0.9.7 (released: 2014-05-17, r732)
	Major code structure changes:
		[vio] -Split: file/pipe open/close operations to virtual IO (vio)
		[linux] -Add: initial linux kernel module effort (defunct yet)
		[array] -Add: virtualized array access (except for write) with callback functions
		[libmawk] -Split: lmawk-comp and lmawk-exec frames - most code is in common yet
		[libmawk] -Add: MAWK_NO_FORK for configuring against system() and fork()
	Code cleanup:
		[da_bin] -Cleanup: compiler warnings around da_bin (binary script save/load)
		[da_bin] -Split: da_bin and da_bin_helper: precompiled binary script load doesn't directly call read() but an user provided callback for virtualization
		[da_bin] -Fix: array creation on binary load
		[da_bin] -Fix: when resetting code base size for loading binary, use zmalloc for proper allocation size
		[build] -Fix: Makefile cleanup for portability
		[libmawk] -Fix: prefix NF, RS and other similar macro names with MAWK_ - they collide in the Linux kernel
		[test_3rd] -Add: scripts for running optional 3rd party tests from vendor/ (for the gawk set, without much configuration or filtering)
		[regex] -Change: error handling without setjmp/longjmp (return values and a bunch of checks)
		[regex] -Fix: regex lib uses zmalloc memory allocation to ensure all memory is free'd after a context is destroyed
		[regex] -Add: tiny test program to trigger almost all possible error conditions in the regex lib
		[regex] -Fix: move runtime states of the regex lib in the mawk struct to make it reentrant
		[regex] -Fix: bi_vars are part of the mawk struct because parallel scripts may have different values for the same variables or even modify them from script
	More portable doubles (and numeric):
		[numeric] -Add: use porty's math_wrap for log() to get rid of undeterministic fpe
		[numeric] -Add: use PM math protection copied from libporty
		[numeric] -Add: new builtin function isnan()
		[numeric] -Fix: virtualize strtod int strtonum: on a real int-only platform (e.g. Linux kernel) there won't be strtod at all
	Fixes of the core functionality:
		[libmawk] -Fix: make sure runtime error exit code takes over in final_error_code
		[bi_func] -Fix: substr for start indices less than 1 behave similar to how substr() handles length overruns (silently truncate) - gawk has the same behavior
		[bi_func] -Fix: gsub() patch for the ^ bug
		[io] -Fix: redirection conditions messed up in r349
		[libmawk] -Fix: disable -v only when MAWK_NO_EXEC is set, and don't even consider MAWK_NO_COMP
		[libmawk] -Fix: fin_exec should respect a MAWK exit request and not retry reading
		[libmawk] -Fix: if FIN can not be open (invalid file name, nonexisting file), don't segfault but return error

libmawk 0.9.6 (missed)

libmawk 0.9.5 (released: 2012-10-13, r527)
	[libmawk] -Add: memory usage accounting figures; -Wmaxmem=size sets maximum
	                memory allocation in bytes (optional suffixes: k and m)
	[libmawk] -Add: binary save/load functionality (-Wcompile and -b)
	                works on 32 bit systems only (will be fixed later)
	[libmawk] -Change: replace hardwired double references with generin numeric
	                   (C_NUM, num_t) - libmawk can be configured to use int or
	                   double as numeric format (./configure --numeric=)
	[libmawk] -Cleanup: (portability tweak) const correctness in mawk_reverse_find
	[libmawk] -Add: (portability tweak) _POSIX_SOURCE 
	[libmawk] -Fix: (portability tweak) explicit rules for rexp/*.o incuding
	                $(CC) command line for old fashioned make having the wrong
	                implicit rule
	[libmawk] -Cleanup: (portability tweak) k&r style function
	                    declarations/definitions removed from rexp lib
	[libmawk] -Fix: (portability tweak) missing prototypes to avoid implicit
	                declaration warning
	[libmawk] -Change: disable two zfree() calls that would free main code to
	                   avoid double frees
	[libmawk] -Add: compile with app clfags
	[libmawk] -Cleanup: move scconfig'd -D options to conf.h from Makefile.conf
	                    to make compiler command lines shorter
	[libmawk] -Cleanup: new vars.[ch] for collecting variable-related code
	[libmawk] -Fix: mawk_mm (aka free_later) mechanism memory handling erros
	                when realloc()'d
	[doc] -Add: explain design decisions behind our two gnu-dependencies
	[doc] -Add: portability table (per system: compiles out of the box, has
	            FPE problems, awklib test ran fine)

libmawk 0.9.4 (released: 2010-12-26, r392)
	[scconfig] -Add: detect pipe(2) and set NO_PIPE, replacing HAVE_REAL_PIPES
	[scconfig] -Add: detect size_t include file (removes the ifdef mess)
	[scconfig] -Add: require detection of cc/fpic (fixes compilation on amd64)
	[libmawk] -Cleanup: del PROTO() macro: libmawk requires at least C89 compiler
	[libmawk] -Cleanup: remove revision history and file name comments from *.[ch]
	           copyright notice above all mawk copyright notices
	[libmawk] -Cleanup: version to clearly indicate that this is lmawk
	[libmawk] -Cleanup: unified indentation in all .c and .h files
	[libmawk] -Cleanup: remove a lot of compiler warnings, fix const correctness
	[libmawk] -Cleanup: Makefile.dep generation rule; proper, up-to-date Makefile.dep
	[libmawk] -Del: remove FAKE_PIPES support (was only for DOS anyway)
	[libmawk] -Del: void * is a must, PTR should not fall back to char *
	[libmawk] -Del: cut out MSDOS support with all its "dreaded segment nonsense"
	[libmawk] -Fix: get bison to generate a reentrant parser
	[libmawk] -Fix: move static globals to mawk state struct
	[libmawk] -Fix: memory leaks


libmawk 0.9.3 (released: 2010-12-21, r307)
	[libmawk] -Fix: use -fPIC for compiling (helps on amd64)
	[libmawk] -Add: new builtin variable ERRNO with a different error code for each corner case in extension calls
	[libmawk] -Add: new built-in variable LIBPATH for library search path
		- skip loading a script if name started with '+' and the script was already loaded
		- if script file name starts with '/', assume it to be an absolute path and skip LIBPATH search
	[scconfig] -Add: scconfig configures/generates Makefiles of libmawk after autodetecting system features
	[scconfig] -Del: config-user, v7, atarist: scconfig should take care of all supported systems
	[scconfig] -Add: central ./configure and Makefile
	[libmawk] -Fix: order of running BEGINs with "include"
	[libmawk] -Fix: memory leaks around parser state
	[awklib] -Add: three awk libraries:
		- lib_rand for reproducible pseudo random numbers
		- lib_array for packing/unpacking/printing arrays
		- lib_ascii for converting characters to ASCII codes


libmawk 0.9.2 (released: 2010-12-12, r229)
	[libmawk] -Fix: invalid memory handling around cells
	[libmawk] -Fix: manual page dates and author and project/executable name
	[libmawk] -Add: dynamic awk function calls (call() and acall())
	[libmawk] -Add: dynamic awk variable value fetch (valueof())
	[libmawk] -Add: include

libmawk 0.9.1 (released: 2009-08-14, r198)
	[API] -Add: remember userdata when registering and calling back c functions
	[API] -Add: option to suppress undefined function calls
	[API] -Add: new call allowing awk function calls without varargs
	[API] -Change: split up libmawk_initialize in 3 stages (optional)
	[libmawk] -Del: autotools, keep last generated Makefile for hand editing
	[libmawk] -Del: config.h (merged in Makefile.conf.in)
	[libmawk] -Rename: mawk -> lmawk (the binary)
	[libmawk] -Change: print cell prints integers without .000000
	[testapp] -Move: testapp out from libmawk (new dir structure)
	[testapp] -Fix: stack handling bug
	[doc] -Add: manual pages for libmawk calls

libmawk 0.9.0 (released: 2009-07-22, r146)
	* Initial release, based on mawk 1.3.3
	* r3...r8 Separate libmawk_call() from execute(); allow undefined functions
	* r9...r42 globals to struct (reentrant)
	* r43...r92 rename non-static functions to have a mawk_ prefix
	* r92...r145 libmawk