home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / fweb153.zip / READ_ME-1.5x
Text File  |  1996-02-27  |  25KB  |  605 lines

  1.  
  2.                              FWEB version 1.5x
  3.                              September 22, 1995
  4.  
  5.   (See the BUGS list at the end of this file.)
  6.  
  7.   FWEB v1.5x (where 'x' is a number like '3') is available via
  8. anonymous ftp from
  9.  
  10.         ftp.pppl.gov:/pub/fweb/fweb-1.5x.tar.Z
  11.  
  12. This release has three principal purposes:
  13.  
  14.         (1) It now supports LaTeX2e in native mode.
  15.  
  16.         (2) It adds support for templates and exceptions in C++.  It also
  17. incorporates some miscellaneous and usually obscure bug fixes.  A few
  18. convenience features have been added.
  19.  
  20.         (3) It provides executables for the IBM-PC that run in extended memory.
  21.  
  22.  
  23.   To unpack the release,
  24.  
  25.         uncompress fweb-1.5x.tar
  26.         tar -xvf fweb-1.5x.tar
  27.  
  28. This creates the directory fweb-1.5x with the four subdirectories boot,
  29. demos, manual, and web:
  30.  
  31.         boot   --- Presently almost entirely useless; ignore it.
  32.         demos  --- Presently empty.
  33.         manual --- Documentation, style files, etc.
  34.         web    --- *.c and *.h files for installation; source code.
  35.  
  36.   Major points to note with this release are:
  37.  
  38.         * For detailed installation instructions, see the READ_ME.FWEB file
  39. in the top-level directory of the release.
  40.  
  41.         * Version 1.5x has been developed and tested only using the gcc
  42. compiler on a Sun SPARCstation.  The extensive testing on other platforms
  43. that was done with previous releases has not yet been done because of lack
  44. of time.  Hence, this release is primarily intended for people with a
  45. standard Unix environment and an ANSI-compliant C compiler.  You must use
  46. `./configure' to create the make files; see READ_ME.FWEB.  As time permits,
  47. executable binaries for various personal computers may be provided, but
  48. this will not be for (at least) several months.  In particular, ports to
  49. OS/2 and MS-DOS are in the works.  I presently do not have the resources to
  50. develop on the Mac.
  51.  
  52.         * Further FWEB development will be done with LaTeX---LaTeX2e in
  53. particular.  Although basic TeX pretty-printing may still be possible, some
  54. features may not work, and no bugs relating to Plain TeX will be
  55. addressed.
  56.  
  57.         * Hence, the default processor that works in conjunction with
  58. fweave is now LaTeX (`-PL' option), not TeX (`-PT').
  59.  
  60.         * The experimental macro package fwebmacL.sty used for LaTeX
  61. support with v1.40 is now the default, hence called fwebmac.sty.  Eliminate
  62. any reference to fwebmacL.sty in your .fweb file, scripts, etc.
  63.  
  64.         * Only the texinfo version of the manual is supplied.  You should
  65. install this online; however, a postscript version of the manual is also
  66. supplied.
  67.  
  68.         * No demos are provided with this release, since they have not yet
  69. been tested for this version and also need to be updated.
  70.  
  71.  
  72.                      RELATIVELY MINOR CHANGES (v1.53)
  73.  
  74. V1.53 fixes a relatively small number of obscure bugs in v1.52--beta; for a
  75. discussion, see the BUGS list at the end of this file.  A few enhancements
  76. were also made.  They include:
  77.  
  78. * Sections can be numbered by consecutive integers rather than LaTeX's
  79. default Dewey-decimal form by saying
  80.  
  81.         LaTeX.package = "fwebnum"
  82.  
  83. * The `-H' option (experimental and incomplete) was added.  For C and C++,
  84. this option tells fweave to scan `#include' files for `typedef' and/or
  85. `class' definitions.
  86.  
  87. * The `-k' option was added.  This tells Fortran and Ratfor to understand
  88. the lower-case forms of I/O keywords such as `iostat' (with the exception
  89. of `read', `write', and `end').
  90.  
  91. * The `-n:' option was added.  This tells Fortran to place statement labels
  92. on a separate line, which is useful when the labels are relatively long.
  93. (By default, Fortran labels are placed on the same line as the thing they
  94. are labeling, which looks good for short labels.)
  95.  
  96. * The preprocessor command `@#line' was added.  For C code, this adds an
  97. explicit `#line' command to the tangled output file.  This helps to keep
  98. the line numbers between debugger and source file in sync when an FWEB
  99. preprocessor statement expands to several lines.
  100.  
  101.   An implicit `@#line' command is added after each `@%' that begins a line
  102. (this keeps line numbering correct).  To override this, use the option `-T#'.
  103.  
  104. * `-p' (style-file) options on the command line are now processed AFTER the
  105. local style file.
  106.  
  107. * The functionality of the `-D' command was enhanced to include optional
  108. arguments that limit the information that will be listed.
  109.  
  110.  
  111.                      RELATIVELY MINOR CHANGES (v1.52)
  112.  
  113. * fwebmac.sty was enhanced to warn to run LaTeX again when the section
  114. numbering hasn't yet been brought up to date.  I'm not sure I've covered
  115. all the bases, but before it didn't complain at all.
  116.  
  117. * C++ classes are now formatted (identified as reserved words) on the first
  118. pass, so forward references such as
  119.  
  120.         @ The class |C|...
  121.         @a
  122.         class C
  123.           {}
  124.  
  125. will now work.  Note that |typedef| has done this for a while, although
  126. there are still a few glitches.
  127.  
  128. * For two years, the documentation has described two control codes as
  129. follows:
  130.  
  131.         @~ --- inhibit line break.
  132.         @+ --- force an index entry.
  133.  
  134. Apparently the code had these definitions inverted; it has now been brought
  135. up to date with the documentation.  Fortunately these commands are
  136. evidently not heavily used, since no one complained.
  137.  
  138. * fwebmac.sty was further reworked to interact properly with the user
  139. package multicol.sty.  If in fweb.sty you say `LaTeX.package "multicol"',
  140. then the two-column index is done with multicol; this gives various
  141. improvements over the \twocolumn that was previously used.  Furthermore, it's
  142. possible to use multicol to do your entire document in two-column format.
  143. This turned out to be relatively simple, but one needs to get the commands
  144. in the proper order.  See the Info documentation, menu item `Index', for
  145. more details.  Two-column format substantially cuts down the white space; I
  146. saved about 50% on a 200-page code.
  147.  
  148.   One known glitch with FWEB/multicol is that if one selects page-number
  149. cross-references instead of LaTeX section numbers, page references such
  150. as 98c don't get the 'c' correct.  Presumably not a big deal.  At this
  151. point, assume that the use of multicol is highly experimental.
  152.  
  153. * Further bugs in the C and C++ production rules were fixed.
  154.  
  155.  
  156.                          RELATIVELY MINOR CHANGES (v1.50)
  157.  
  158. * People justifiably complained about one aspect of the section numbering
  159. scheme for the new LaTeX look.  Namely, if any section had a maximum depth
  160. of, say, 3 (e.g., it contained a command `@*2'), then under v1.40 the
  161. unnamed code within any major section was numbered like `4.0.0.1' even if
  162. section 4 had a depth of just 1.  This has now been changed; one now gets
  163. `4.1' instead of `4.0.0.1'.
  164.  
  165.   The fwebmac.sty code that accomplishes this is both very new and very
  166. tedious.  If it doesn't work, all is not lost; one can turn it off by
  167. saying `\stripzerosfalse'.
  168.  
  169. * The syntax for entries in the initialization file .fweb has been modified
  170. (in a way that is as backward-compatible as possible).  Previously, '+'
  171. meant process the option before the command-line options, '-' meant process
  172. it after.  This convention was somewhat hard to remember, given the
  173. statement that any command-line option could be put into .fweb;
  174. furthermore, just about everything in .fweb should, in fact, be processed
  175. before the command-line options.  So now both '+' and '-' mean the same
  176. thing, namely process before (and the '+' notation should fade away as time
  177. goes on).  If you explicitly want something to be processed after all
  178. command-line options for some tricky reason, begin it with '&'.  I.e., scan
  179. your .fweb file for any line beginning with '-' and replace that with '&'.
  180.  
  181. * The LaTeX processor (`-PL' option) is now the default, rather than `-PT'
  182. for Plain TeX.
  183.  
  184. * The experimental fwebmacL.sty macro package released with v1.40 has been
  185. substantially reworked and is now the default, fwebmac.sty.
  186.  
  187. * Support for LaTeX2e was added to fwebmac.sty.  Essentially, this means
  188. that the \documentclass and \usepackage commands are used instead of
  189. \documentstyle.  The following fweb style-file options were added to
  190. support those commands:
  191.  
  192.         LaTeX.class.options
  193.         LaTeX.class
  194.         LaTeX.package.options
  195.         LaTeX.package
  196.         doc.preamble
  197.  
  198. The beginning of the file output by fweave looks like the following, where
  199. <parameter> means the contents of the style-file string called `parameter':
  200.  
  201.         \input fwebmac.sty
  202.         \Wbegin{many obscure arguments}
  203.         <limbo.begin> % <limbo> also works.
  204.         Optional TeX commands copied from user's limbo section
  205.         <limbo.end>
  206.  
  207. The \Wbegin command essentially does the following:
  208.  
  209.         \documentclass[<LaTeX.class.options>]{<LaTeX.class>}
  210.         \usepackage[<LaTeX.package.options>]{<LaTeX.package>}
  211.         <doc.preamble>
  212.         \begin{document}
  213.  
  214. For precise information about how \Wbegin works, see fwebmac.web.  If you
  215. feel that macro absolutely needs to be changed, please inform the
  216. developer.
  217.  
  218. * The style-file parameter `index.name' was added.  This is the
  219. section name to be given to the index, which should be the last major
  220. (starred) section.  It becomes the contents of the macro `\INDEX'.
  221. Therefore, one can end one's source file by saying
  222.  
  223.         @* \INDEX.
  224.  
  225. * The `$IF...' class of built-in functions was reworked.  They should now
  226. be more robust, recursive, and intuitive.  Simple uses of these functions
  227. should work as before.  However, complicated uses that depended on tricky
  228. things about the order of expansion of arguments may require revision.
  229. Carefully compare the descriptions of these functions in the documentation
  230. with your usage of them in any pre-existing code.  In some cases, if a
  231. previous constructions using $IF no longer works, it might work if you say
  232.  
  233.         @m $IF(a,b,c) $$IF(a,b,c)
  234.  
  235. and then use `$$IF' in your code.  (This forces an extra level of macro
  236. expansion.)  The same remark goes for `$DEFINE'.
  237.  
  238. The old forms `_IF' etc. no longer work; convert to `$IF'.
  239.  
  240. * The option `-j' was added.  This inhibits multiple inclusions via @i of
  241. the same include file.
  242.  
  243. * One now has the ability to change the comment character that begins
  244. ftangle's line command.  In the style file, say, e.g.,
  245.  
  246.         line_char.N '#'
  247.  
  248. to change the default `*line' output by ftangle in Fortran mode to `#line'.
  249. This could be useful if one runs the C preprocessor on the tangled Fortran
  250. output.
  251.  
  252. * fweave's processing of |typedef| statements in C and C++ was improved.
  253.  
  254. * FWEB should now be able to process C++ templates and exception handling,
  255. at least in simple situations.  The typesetting of C++ references (e.g.,
  256. `int&') was also improved. Please report any difficulties.
  257.  
  258. * There were various miscellaneous obscure bug fixes.
  259.  
  260.  
  261.                           MAJOR FEATURES (v1.40)
  262.  
  263. * Beginning with v1.40, documentation is now written in texinfo format.
  264. Only this documentation will be supplied in the future.  For a summary of
  265. the features new with versions 1.40 and 1.50, see the info menu item `New
  266. features'.
  267.  
  268. * Versions of FWEB prior to 1.40 did not work entirely gracefully with LaTeX, i
  269. n
  270. that LaTeX's \output routine was usurped by FWEB.  That is no longer the
  271. case; LaTeX's \output routine is now used, as are its sectioning and
  272. table-of-contents commands.  Things like footnotes should now work.
  273.  
  274. When using LaTeX, the appearance of FWEAVE's output will be noticably
  275. different from the Plain TeX output from v1.30 and before.  In particular,
  276. it is supposed to look more `book-like' in appearance.  Sections are no
  277. longer numbered at the beginning of the TeX part, but rather when the code
  278. part (if any) begins.  Section numbering will be LaTeX's---e.g., 13.1.5,
  279. and this will be reflected in the index and other cross-reference
  280. information.
  281.  
  282.   There are several difficulties with the LaTeX support:
  283.  
  284.         (1) After an editing change LaTeX may not warn that section
  285. numbering is out of date.  If in doubt, or if question marks appear in
  286. place of section numbers, or if the table of contents is incomplete, rerun
  287. LaTex.  It may initially require three passes to get everything consistent.
  288.  
  289.         (2) See the discussion of \INDEX under the remarks for v1.50.
  290.  
  291. * Version 1.40 featured the beginnings of some work on language
  292. independence.  In principle, it is now possible to weave and tangle
  293. sections of code literally (verbatim) instead of using FWEAVE's
  294. pretty-printing and FTANGLE's blank suppression.  One is supposed to be
  295. able to do this both for compiler languages like Fortran or C that FWEAVE
  296. can pretty-print, as well as for any other language (makefiles, etc.) whose
  297. syntax FWEB does not understand.  It is certain that these features have
  298. not yet been fully or entirely correctly implemented, although v1.50
  299. incorporates some bug fixes.  The general mechanism is complex, as it must
  300. interact smoothly with FTANGLE's macro preprocessor and other such
  301. features.  I STRONGLY RECOMMEND THAT NOBODY BEGIN A LARGE-SCALE PROGRAMMING
  302. PROJECT USING THESE NEW LANGUAGE-INDEPENDENT FEATURES.  That said, I hope
  303. people will try it out so problems can be identified and fixed.
  304.  
  305.   There are two ways of obtaining language independence: a
  306. language-independent `mode' (the `N mode') that can be used even for
  307. languages such as Fortran, and a `verbatim language'.  The verbatim
  308. language is the stronger of the two; it turns on the language-independent
  309. mode.  The two concepts are closely related, and in some applications they
  310. will function identically.
  311.         
  312.   If you are, say, a Fortran programmer but merely want to turn off
  313. pretty-printing, you should use the N mode.  This is done by using the
  314. command-line option `-N'.  (Case is significant; `-n' means something
  315. entirely different.)  FWEAVE will just print your source in a verbatim
  316. environment, and will continue to do indexing as usual; FTANGLE will copy
  317. the source literally to the output file, say test.f.
  318.  
  319.   If you are using FWEB to document a language different than the supported
  320. ones of C, C++, Fortran, Ratfor, and TeX, then you should select the
  321. verbatim language by means of the language command `@Lv' (replacing
  322. something like `@c', `@n', or `@Lx').  FWEAVE will again print your source
  323. in a verbatim environment, and FTANGLE will copy it to the output file
  324. test.mk.  (The `.mk' extension can be changed in the style file.)
  325.  
  326.   The N mode and the verbatim language are supposed to obey the usual
  327. scoping and inheritance rules (modules inherit the features of their
  328. ancestors), so that mixed-language programming still works correctly.
  329. There are probably some difficulties here, however.
  330.  
  331.   Cross-referencing is turned off under `@Lv'.  However, FWEAVE still
  332. recognizes identifiers according to FWEB's rules.  This does not always
  333. make sense, and in the future a mechanism should be provided for modifying
  334. those rules.  (This is tricky because of built-in functions, WEB macros,
  335. etc.)  In any event, an index entry for FWEB's current understanding of an
  336. identifier can be forced by means of the `@+' command.
  337.  
  338.   Sharp-eyed users will note that prior to v1.40 `@+' used to mean something
  339. else---namely, it prevented a line break, as in `x; @+ y;'.  That role is
  340. now played by `@~' (which, if you think of TeX, should be easier to
  341. remember).  I regret making this change, but the new usage is now symmetric
  342. with the `@-' command, which means delete an index entry.  Incidently,
  343. another change that was made in the last version, namely replacing the
  344. compiler directive command `@!' by `@?', now becomes more crucial since
  345. `@!' is now used to suppress expansion of a WEB macro or built-in function.
  346. (This is sometimes particular necessary in the language-independent modes.)
  347. In summary, five important control codes in versions beginning with 1.40 are
  348.  
  349.         @? --- compiler directive
  350.         @~ --- suppress line break
  351.         @! --- suppress macro expansion of next identifier
  352.         @- --- suppress index entry for next identifier
  353.         @+ --- force index entry for next identifier
  354.  
  355. It is expected that these control codes will remain stable.
  356.  
  357.  
  358.                          RELATIVELY MINOR CHANGES (v1.40)
  359.  
  360. * Beginning with v1.40, built-in functions such as $PI now begin with '$',
  361. not '_'.  For example, you should say `$EVAL(1+2)', not `_EVAL(1+2)'.  The
  362. underscore convention was a poor design decision that introduced conflicts
  363. with ANSI C in certain cases.  Existing codes will still work, as FWEB
  364. currently understands both conventions.  One can therefore say things like
  365. `@#undef _EVAL' (retaining the functionality of $EVAL).  However, THE
  366. UNDERSCORE CONVENTION WILL GO AWAY IN A FUTURE RELEASE.  Please eliminate
  367. any calls to built-in functions beginning with underscores in present
  368. codes.
  369.  
  370. * When the `-F' option is used, FTANGLE will write its output to temporary
  371. files and compare the results to the last version in the directory, if any.
  372. The file is updated only if a difference is found.  This prevents make
  373. files from recompiling source if only the documentation was changed.  This
  374. feature was not entirely trivial to make portable, so please report any
  375. difficulties.
  376.  
  377. * A new flag `-n)' (reverse Fortran indices) has been added.  This may be
  378. very useful for advanced Fortran programming; see fweb.info for its
  379. description.
  380.  
  381. * The ./configure automatic configuration script has been improved, and should
  382. lead to easy installation on many systems.  Please report any difficulties
  383. you have with using this script.
  384.  
  385.  
  386.                                    BUGS
  387.                                Version 1.53
  388.  
  389. * (October 19, 1995):  For FTANGLE's macro processor, when a stringize
  390. operation begins a line, as in
  391.  
  392. -------------------------------------------------------------------------------
  393. @m A(name)
  394.         #name
  395. -------------------------------------------------------------------------------
  396.  
  397. it does not expand the `#name'.  A kludge is to put the pseudo-expression
  398. `@e' before the `#name', as in
  399.  
  400. -------------------------------------------------------------------------------
  401. @m A(name)
  402.         @e#name
  403. -------------------------------------------------------------------------------
  404. =
  405.  
  406. Of course, in this simple example, it would be more sensible to just put
  407. everything on one line:  `@m A(name) #name'.
  408.  
  409. * (October 16, 1995):  In C++, the construction `operator ^' creates bad
  410. LaTeX code in the Index.  To fix, apply the following change files:
  411.  
  412. -------------------------------------------------------------------------------
  413. --- fweave-1.53.ch ---
  414.  
  415. Changes \^ to \Caret.  (See also fwebmac-1.53.ch.)
  416. JAK 10/16/95
  417.  
  418. @x
  419.  INIT_OP(@'^',"CARET",ALL_LANGUAGES,"\\^",binop); // `|x^y|'
  420. @y
  421.  INIT_OP(@'^',"CARET",ALL_LANGUAGES,"\\Caret",binop); // `|x^y|'
  422. @z
  423.  
  424. -------------------------------------------------------------------------------
  425. --- fwebmac-1.53.ch ---
  426.  
  427. Adds \Caret.  (See also fweave-1.53.ch.)
  428. JAK 10/16/95
  429.  
  430. @x
  431. \def\AT!{@@}% Knuth's abbreviation for the at sign for control text: '\AT!'
  432. @y
  433. \let\Caret\^
  434. \def\AT!{@@}% Knuth's abbreviation for the at sign for control text: '\AT!'
  435. @z
  436. -------------------------------------------------------------------------------
  437.  
  438. * (October 2, 1995):  With FWEAVE, template constructions of the form
  439.  
  440. -------------------------------------------------------------------------------
  441. @c++
  442.  
  443. @
  444.  
  445. @% @f c0 int
  446. @% @f c1 int
  447.  
  448. @a
  449. class A
  450. {
  451. static c0<c1, A*> test;
  452. }
  453. -------------------------------------------------------------------------------
  454.  
  455. generate an infinite production loop---the infamous ``rule 591''.  This can
  456. be avoided by uncommenting the @f statements in the above, although the
  457. result may not format optimally.
  458.  
  459. * (October 2, 1995):  There's some weird behavior with installing FWEB on
  460. the RS-6000.  See a message in /pub/fweb/archive/fweb-installers.archive.
  461.  
  462. * (October 2, 1995):  Tangling the Fortran file
  463.  
  464. -------------------------------------------------------------------------------
  465. @n/
  466.  
  467. @
  468. @a
  469.         x // BUG
  470.  /* Test */
  471.         y
  472. -------------------------------------------------------------------------------
  473.  
  474. doesn't put the `y' on a separate line.  It works OK if one uses the long
  475. form of the comment---i.e., `/* NOBUG */'.
  476.  
  477. * (September 29, 1995):  The behavior of the `-D' option doesn't quite
  478. match the documentation.  For example, if you say `-c -Dexit', it doesn't
  479. report that `exit' is an intrinsic function.  It will do so if you say
  480. `-c -D[i]exit'.
  481.  
  482.         (FIXED for v1.54.)
  483.  
  484.                                    BUGS
  485.                                Version 1.52
  486.  
  487. * (September 8, 1995):  When the `-v' option is not used, the tangled
  488. output for a short comment (// ...) included an extra newline.  (FIXED for
  489. v1.53.)
  490.  
  491. * (September 7, 1995):  When the @% command (invisible comment) is used,
  492. the subsequent line numbering produced by FTANGLE was incorrect.  (FIXED
  493. for v1.53.)
  494.  
  495. * (September 6, 1995):  FTANGLE didn't recognize `-i!'.  (FIXED for v1.53.)
  496.  
  497. * (August 10, 1995):  For multiple-language programming, section-number
  498. comments were sometimes output to the wrong file.  A workaround is to use
  499. the -# option.  (v1.52-beta; FIXED for v1.53.)
  500.  
  501. * (July 27, 1995):  For fweave, if an @I command is encountered in the
  502. limbo section, the -i option does not work properly (it spuriously
  503. suppresses important output).  A workaround is to put at least one section
  504. before the @I, as in
  505.  
  506. -----------------
  507. @c
  508. @* INTRODUCTION.
  509. @I test.hweb
  510. -----------------
  511.  
  512. * (July 1, 1995): An egregious error in fweave may clobber the heap on some
  513. systems, particularly personal computers.  Apply the following change file
  514. (incorporated into v1.53):
  515.  
  516. -------------------------------------------------------------------------------
  517. common.ch
  518. July 1, 1995
  519. To use:
  520.         ftangle -A -# --v --F common common
  521.         make fweave
  522.  
  523. @x
  524. SRTN mfree(VOID)
  525. {
  526. if(!mod_names) return; // For errors happening during the command line.
  527.  
  528. for(--next_mod_name; next_mod_name >= mod_names; next_mod_name--)
  529.         FREE(*next_mod_name);
  530. }
  531. @y
  532. SRTN mfree(VOID)
  533. {
  534. if(!mod_names) return; // For errors happening during the command line.
  535.  
  536. while(next_mod_name > mod_names)
  537.         FREE(*(--next_mod_name));
  538. }
  539. @z
  540. -------------------------------------------------------------------------------
  541.  
  542. * (July 1, 1995):  The web/Makefile should, but does not, install
  543. fweb.info-6.  (v1.52-beta; FIXED for v1.53.)
  544.  
  545. * (June 13, 1995):  In fweb-1.52/manual/fwebmac.web,
  546.  
  547. change
  548.         \global\let\*=\lapstar
  549. to
  550.         \global\let\*=\W@@lapstar
  551. then
  552.         ftangle -# -v fwebmac
  553.  
  554. (FIXED for v1.53.)
  555.  
  556. * Effectively, only LaTeX2e is now supported with FWEAVE.  Most codes
  557. should still work with TeX or LaTeX 2.09, but some advanced features are
  558. known to not work with the latter two, and in general testing of
  559. fwebmac.sty is now done only with LaTeX2e.  For example,
  560.  
  561.         - Code mode (stuff between vertical bars) may be used in the names
  562. of starred sections for LaTeX2e, but possibly not for TeX or LaTeX.
  563.  
  564. * The command `@N' is not yet entirely robust; try not to use it.  @Lv is
  565. more robust, but don't use that either unless you really must.
  566.  
  567.         - Do not use @N in limbo; use @Lv instead.
  568.  
  569.         - If you must use @N to locally inhibit pretty-printing, use it
  570. immediately before the @a or module name beginning the code part.  If you
  571. use it elsewhere in the TeX part and there are embedded shifts into code
  572. mode (|...|), FWEAVE will not deal with those correctly.
  573.  
  574.         - Ratfor (@r) doesn't yet coexist with @N.
  575.  
  576.         -  ASCII characters whose values are > 127 do not presently coexist
  577. with @N or @Lv.
  578.  
  579.         - I'm strongly tempted to remove the @N command.
  580.  
  581. * -W[ sometimes can't process subscripts that consist of complicated/lengthy
  582. expressions.
  583.  
  584. * FWEAVE will not typeset various Fortran--90 constructions correctly; the
  585. rules have been little tested.  Also, various features of Fortran--90 were
  586. deduced from a DRAFT of the ANSI design; as it turns out, some things, such
  587. as the token /= instead of <> for .NE., were changed in the final version.
  588. Please report difficulties by submitting (very short) examples.
  589.  
  590. * The parsing algorithm used for C and C++ (inherited from the original
  591. CWEB) is really not up to the job.  Its virtue is that it's fast, but
  592. something more recursive is really called for.  The present one sometimes
  593. can't distinguish similar-looking constructions that are syntactically
  594. quite different.  The changes required are fundamental; not minor tweaking.
  595. So they won't happen soon; perhaps never.
  596.  
  597. * In C, the statement `|typedef int A, B;|' doesn't format |B| on the first
  598. pass, so forward references to |B| won't format correctly.
  599.  
  600. * The built-in function $P doesn't format well.
  601.  
  602. * The core FWEB header file `typedefs.web' can't be woven satisfactorily.
  603. (Problems with the verbatim mode.)  Nevertheless, this file demonstrates
  604. some useful techniques.
  605.