Skip to content

Releases: ascherer/cweb

CWEB — release 4.12

18 Apr 12:25
Compare
Choose a tag to compare

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 and cwebacromac.tex

CWEB — release 4.11

03 Dec 12:31
Compare
Choose a tag to compare

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 to printf (with "%s")
  • Reuse code for @(secondary output@> (CTANGLE)
  • Copy whole structures via pointers
  • Disentangle local variables in reduce and translate (CWEAVE/CTWILL)
  • Avoid shadow variables (cf. h in WEAVE)
  • Updates in cwebman.tex
  • Use zero-initialisation

CWEB — release 4.10

19 Aug 14:11
Compare
Choose a tag to compare

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 with snprintf
    • 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
  • Insert blank line after \ch in TeX output (cf. CWEB 3.0)

Macro changes

  • Cleanup some \acro macros in cwebmac.tex

CWEB — release 4.9

15 May 15:14
Compare
Choose a tag to compare

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 (full space) to 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.

26 Jun 17:02
Compare
Choose a tag to compare

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

05 Jun 14:38
Compare
Choose a tag to compare

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

  • section @<Preprocessor definitions@> isn't overprinted (in PDF)
  • issues #33, #34, #36, and #37

Known bug:

CWEB — release 4.7

05 Feb 13:31
Compare
Choose a tag to compare

This new release of CWEB adds full support for Martin Ruckert's HiTeX engine and its HINT output format.

CWEB — release 4.6.1

15 Jan 12:11
Compare
Choose a tag to compare

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

26 Dec 11:00
Compare
Choose a tag to compare

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 and CWEBMAC.TEX for numeric constants.

    Instead of working with / for the single special case of ‘hex exponent’ (as in 0x1FFFFp10), CWEAVE splits off the p part from \T and CWEBMAC.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 with cweave -e prod; pdftex prod, because quite a few arguments of \malt and \maltt where not {group}ed correctly.

  • Make squash fully orthogonal on parameter k.

    Now squash(pp,k,...) always works as abbreviation for big_app${k}(pp); reduce(pp,k,...) as described in the TeX part of section 118.

    The former special case k==1 gets shifted to reduce with special value k==0. This variant never is preceded by big_app1(pp) and skips several internal commands.

And as always, tons of minor changes, fixes, and redactions were made.

CWEB — release 4.5

14 Jul 09:09
Compare
Choose a tag to compare
  • code review with splint
  • all ‘length’ variables are retyped to size_t
  • a few new bugs were created and fixed