Releases: ascherer/cweb
CWEB — release 4.12
The following changes are applied in TeX Live 2024:
Fixes
- Issue #48.
- do...while loops are placed separately from surrounding statements, even when CWEAVE is invoked with option
-f
; this can, of course, be overwritten with@+
before do and after while.
Features
- New option
-F
for CWEAVE. - Extended
\startpdf
to match page numbers in PDF bookmarks and table-of-contents - Runtime improvements in
cwebmac.tex
andcwebacromac.tex
CWEB — release 4.11
Features
- Factor out
cwebacromac.tex
with hypertext macros; also used downstream for CTWILL - Support LuaTeX as backend engine
Fixes
- Issue #45: Consistent formatting of terminal output in cases of error
- Add long-missing grouping for progress report (harmless glitch in CWEB 2)
- Suppress reference to
l. 0
in error messages (harmless glitch ab origine)
Finesses
- Revert
fputs
back toprintf
(with"%s"
) - Reuse code for
@(secondary output@>
(CTANGLE) - Copy whole structures via pointers
- Disentangle local variables in
reduce
andtranslate
(CWEAVE/CTWILL) - Avoid shadow variables (cf.
h
in WEAVE) - Updates in
cwebman.tex
- Use zero-initialisation
CWEB — release 4.10
Fixes
- Fix issue #43:
out_buf
overflow on malign user input- Handle border case from bug report
- Discard rest of input lines exceeding
buf_size
characters (as in the original WEB) - Purge
ungetc()
from the TeX part as well
- Fix a typo in
examples/wordtest.w
(reported by DEK) Ilk
is of type eight_bits- Avoid over-/underflow of section depth with malicious user input
Internal changes
- Unroll
init_p()
helper function in COMMON- it is used for CWEAVE only (and for CTWILL downstream)
- Match common.w and common.h
- Reshuffle declarations and some code sections
- Add starred section titles
- Demote all starred sections in common.w (single star)
- Code cleanup
- Make
pop_level()
a simple macro in CWEAVE - Use structure assignment (as in CTANGLE)
- More compact
stack
handling - Make use of type mode
- Purge a few goto statements (and add some others)
- Replace some
sprintf
withsnprintf
- Syntactic sugar for functional macros
- Straighten
byte_start
arithmetic - Desolve former section 19 of CWEAVE with internal array sizes
- Hide
print_text
analytics function from C compiler with DEBUG - Streamline
phase_two
of CTANGLE - Refurbish
phase_three
of CWEAVE
- Make
- Insert blank line after
\ch
in TeX output (cf. CWEB 3.0)
Macro changes
- Cleanup some
\acro
macros incwebmac.tex
CWEB — release 4.9
This release
- removes the
register
specifier for compatibility with C++17 - permits special character
$
in C/C++ identifiers (ctangle) - reduces the whitespace in
@(output sections@>
from a\,
(thin space); in “inner TeX mode”, no extra whitespace is used at all (cweave) - fixes issues #41 and ascherer/cwebbin#62 and ascherer/cwebbin#64
CWEB — release 4.8.1.
This service release
- uses
iftex.sty
to test the TeX engine in use and uses\ifpdf
instead of\ifacro
- fixes two historic bugs in
cwebmac.tex
; most notably it correctly counts the number of@<named sections@>
to produce ‘valid’ PDF - uses HINT's ‘infinite’ page space, so we can also show TeX code for section 31 in the Appendix of
cwebman.tex
Note that this service release was rejected by CTAN, because only cwebmac.tex
mentions the updated version number. I will not touch the actual CWEB codes at this time.
CWEB — release 4.8
This new release provides the following features
@<Code sections@>
can be used freely in any#if
–#elif
–#else
–#endif
preprocessor branches without bashing the debugger- the gcc compiler can be invoked with option
-Wimplicit-fallthrough=2
and will acknowledge/* fall through */
comments in the tangled C code - simple C casts like “(double) x” are formatted with non-breaking small spaces as
(double)\,x
in the woven TeX output - the HINT boolean macros are now in lowercase
and fixes
Known bug:
- issue #38
CWEB — release 4.7
This new release of CWEB adds full support for Martin Ruckert's HiTeX engine and its HINT output format.
CWEB — release 4.6.1
This is a service release of CWEB 4.6.
Several internal array dimensions were increased in order to process “TeX in CWEB” in Martin Ruckert's WEB2W project (i.e., the source file https://w3-o.cs.hm.edu/users/ruckert/public_html/web2w/ctex.w).
$ ./ctangle +s ctex
Memory usage statistics:
4142 names (out of 5000)
3240 replacement texts (out of 4000)
77633 bytes (out of 100000)
246143 tokens (out of 270000)
$ ./cweave +s ctex
Memory usage statistics:
4962 names (out of 5000)
23872 cross-references (out of 30000)
97459 bytes (out of 100000)
Parsing:
4962 scraps (out of 5000)
7860 texts (out of 8000)
21108 tokens (out of 30000)
1660 levels (out of 2000)
Sorting:
52 levels (out of 5000)
CWEB — release 4.6
This new release of CWEB 4 mainly deals with three issues:
-
Restore
\T
macro for backward compatibility.CWEB 4.3 introduced a huge incompatibility between
CWEAVE
andCWEBMAC.TEX
for numeric constants.Instead of working with
/
for the single special case of ‘hex exponent’ (as in0x1FFFFp10
),CWEAVE
splits off thep
part from\T
andCWEBMAC.TEX
formats the ‘hex exponent’ with macro\p
. All of this is, of course, yet another kludge. -
Review
prod.w
and cleanup index.The Examples should not create entries in the index.
Moreover, the original
prod.w
had several severe problems when formatted withcweave -e prod; pdftex prod
, because quite a few arguments of\malt
and\maltt
where not{
group}
ed correctly. -
Make
squash
fully orthogonal on parameterk
.Now
squash(pp,k,...)
always works as abbreviation forbig_app${k}(pp); reduce(pp,k,...)
as described in the TeX part of section 118.The former special case
k==1
gets shifted toreduce
with special valuek==0
. This variant never is preceded bybig_app1(pp)
and skips several internal commands.
And as always, tons of minor changes, fixes, and redactions were made.
CWEB — release 4.5
- code review with
splint
- all ‘length’ variables are retyped to size_t
- a few new bugs were created and fixed