]> git.cameronkatri.com Git - mandoc.git/blob - TODO
portability: word boundaries in regular expressions
[mandoc.git] / TODO
1 ************************************************************************
2 * Official mandoc TODO.
3 * $Id: TODO,v 1.204 2015/04/03 12:41:02 schwarze Exp $
4 ************************************************************************
5
6 Many issues are annotated for difficulty as follows:
7
8 - loc = locality of the issue
9 * single file issue, affects file only, or very few
10 ** single module issue, affects several files of one module
11 *** cross-module issue, significantly impacts multiple modules
12 and may require substantial changes to internal interfaces
13 - exist = difficulty of the existing code in this area
14 * affected code is straightforward and easy to read and change
15 ** affected code is somewhat complex, but once you understand
16 the design, not particularly difficult to understand
17 *** affected code uses a special, exceptionally tricky design
18 - algo = difficulty of the new algorithm to be written
19 * the required logic and code is straightforward
20 ** the required logic is somewhat complex and needs a careful design
21 *** the required logic is exceptionally tricky,
22 maybe an approach to solve that is not even known yet
23 - size = the amount of code to be written or changed
24 * a small number of lines (at most 100, usually much less)
25 ** a considerable amount of code (several dozen to a few hundred)
26 *** a large amount of code (many hundreds, maybe thousands)
27 - imp = importance of the issue
28 * mostly for completeness
29 ** would be nice to have
30 *** issue causes considerable inconvenience
31
32 Obviously, as the issues have not been solved yet, these annotations
33 are mere guesses, and some may be wrong.
34
35 ************************************************************************
36 * crashes
37 ************************************************************************
38
39 - The abort() in bufcat(), html.c, can be triggered via buffmt_includes()
40 by running -Thtml -Oincludes on a file containing a long .In argument.
41 Fixing this will probably require reworking the whole bufcat() concept.
42 loc ** exist * algo * size ** imp **
43
44 ************************************************************************
45 * missing features
46 ************************************************************************
47
48 --- missing roff features ----------------------------------------------
49
50 - .ad (adjust margins)
51 .ad l -- adjust left margin only (flush left)
52 .ad r -- adjust right margin only (flush right)
53 .ad c -- center text on line
54 .ad b -- adjust both margins (alias: .ad n)
55 .na -- temporarily disable adjustment without changing the mode
56 .ad -- re-enable adjustment without changing the mode
57 Adjustment mode is ignored while in no-fill mode (.nf).
58 loc *** exist *** algo ** size ** imp ** (parser reorg would help)
59
60 - .fc (field control)
61 found by naddy@ in xloadimage(1)
62 loc ** exist *** algo * size * imp *
63
64 - .nr third argument (auto-increment step size, requires \n+)
65 found by bentley@ in sbcl(1) Mon, 9 Dec 2013 18:36:57 -0700
66 loc * exist * algo * size * imp **
67
68 - .ns (no-space mode) occurs in xine-config(1)
69 reported by brad@ Sat, 15 Jan 2011 15:45:23 -0500
70 loc *** exist *** algo *** size ** imp *
71
72 - .ta (tab settings)
73 #1 most important issue naddy@ Mon, 16 Feb 2015 20:59:17 +0100
74 ircbug(1) gnats(1) reported by brad@ Sat, 15 Jan 2011 15:50:51 -0500
75 also Tcl_NewStringObj(3) via wiz@ Wed, 5 Mar 2014 22:27:43 +0100
76 also posix2time(3) Carsten Kunze Mon, 1 Dec 2014 13:03:10 +0100
77 loc ** exist *** algo ** size ** imp ***
78
79 - .ti (temporary indent)
80 found by naddy@ in xloadimage(1) [devel/libvstr] vstr(3)
81 found by bentley@ in nmh(1) Mon, 23 Apr 2012 13:38:28 -0600
82 loc ** exist ** algo ** size * imp ** (parser reorg helps a lot)
83
84 - .while and .shift
85 found by jca@ in ratpoison(1) Sun, 30 Jun 2013 12:01:09 +0200
86 loc * exist ** algo ** size ** imp **
87
88 - \h horizontal move
89 #2 most important issue naddy@ Mon, 16 Feb 2015 20:59:17 +0100
90 found in cclive(1) nasm(1) bogofilter(1) asciidoc/DocBook output
91 bentley@ on discuss@ Sat, 21 Sep 2013 22:29:34 -0600
92 naddy@ Thu, 4 Dec 2014 16:26:41 +0100
93 loc ** exist ** algo ** size * imp *** (parser reorg helps a lot)
94
95 - \n+ and \n- numerical register increment and decrement
96 found by bentley@ in sbcl(1) Mon, 9 Dec 2013 18:36:57 -0700
97 loc * exist * algo * size * imp **
98
99 - \n(.$ macro argument count number register; ocserv(8) by autogen
100 found by sthen@ Thu, 19 Feb 2015 22:03:01 +0000
101 loc * exist ** algo * size * imp **
102
103 - \w'' improve width measurements
104 would not be very useful without an expression parser, see below
105 needed for Tcl_NewStringObj(3) via wiz@ Wed, 5 Mar 2014 22:27:43 +0100
106 loc ** exist *** algo *** size * imp ***
107
108 - \\ in high-level macro arguments
109 Currently, \\ is expanded in two situations:
110 1) macro and string definition (roff.c setstrn())
111 2) macro argument parsing (mandoc.c mandoc_getarg())
112 For user defined macros, the second happens in time because of ROFF_REPARSE.
113 But for standard high-level macros, it only happens after entering the
114 high level parsers, which is too late because the code doesn't get
115 back to roff.c roff_res() from that point. Because this requires
116 distinguishing requests, user-defined macros and standard macros
117 on the roff_res() level, it is hard to solve without the parser reorg.
118 Found by naddy@ in devel/cutils cobfusc(1) Mon, 16 Feb 2015 19:10:52 +0100
119 loc *** exist *** algo *** size ** imp *
120
121 - using undefined strings or macros defines them to be empty
122 wl@ Mon, 14 Nov 2011 14:37:01 +0000
123 loc * exist * algo * size * imp *
124
125 --- missing mdoc features ----------------------------------------------
126
127 - .Bl -column .Xo support is missing
128 ultimate goal:
129 restore .Xr and .Dv to
130 lib/libc/compat-43/sigvec.3
131 lib/libc/gen/signal.3
132 lib/libc/sys/sigaction.2
133 loc * exist *** algo *** size * imp **
134
135 - edge case: decide how to deal with blk_full bad nesting, e.g.
136 .Sh .Nm .Bk .Nm .Ek .Sh found by jmc@ in ssh-keygen(1)
137 from jmc@ Wed, 14 Jul 2010 18:10:32 +0100
138 loc * exist *** algo *** size ** imp **
139
140 - .Bd -centered implies -filled, not -unfilled, which is not
141 easy to implement; it requires code similar to .ce, which
142 we don't have either.
143 Besides, groff has bug causing text right *before* .Bd -centered
144 to be centered as well.
145 loc *** exist *** algo ** size ** imp ** (parser reorg would help)
146
147 - .Bd -filled should not be the same as .Bd -ragged, but align both
148 the left and right margin. In groff, it is implemented in terms
149 of .ad b, which we don't have either. Found in cksum(1).
150 loc *** exist *** algo ** size ** imp ** (parser reorg would help)
151
152 - implement blank `Bl -column', such as
153 .Bl -column
154 .It foo Ta bar
155 .El
156 loc * exist *** algo *** size * imp *
157
158 - explicitly disallow nested `Bl -column', which would clobber internal
159 flags defined for struct mdoc_macro
160 loc * exist * algo * size * imp **
161
162 - In .Bl -column .It, the end of the line probably has to be regarded
163 as an implicit .Ta, if there could be one, see the following mildly
164 ugly code from login.conf(5):
165 .Bl -column minpasswordlen program xetcxmotd
166 .It path Ta path Ta value of Dv _PATH_DEFPATH
167 .br
168 Default search path.
169 reported by Michal Mazurek <akfaew at jasminek dot net>
170 via jmc@ Thu, 7 Apr 2011 16:00:53 +0059
171 loc * exist *** algo ** size * imp **
172
173 - inside `.Bl -column' phrases, punctuation is handled like normal
174 text, e.g. `.Bl -column .It Fl x . Ta ...' should give "-x -."
175
176 - inside `.Bl -column' phrases, TERMP_IGNDELIM handling by `Pf'
177 is not safe, e.g. `.Bl -column .It Pf a b .' gives "ab."
178 but should give "ab ."
179
180 - check whether it is correct that `D1' uses INDENT+1;
181 does it need its own constant?
182 loc * exist ** algo ** size * imp **
183
184 - prohibit `Nm' from having non-text HEAD children
185 (e.g., NetBSD mDNSShared/dns-sd.1)
186 (mdoc_html.c and mdoc_term.c `Nm' handlers can be slightly simplified)
187
188 - support translated section names
189 e.g. x11/scrotwm scrotwm_es.1:21:2: error: NAME section must be first
190 that one uses NOMBRE because it is spanish...
191 deraadt tends to think that section-dependent macro behaviour
192 is a bad idea in the first place, so this may be irrelevant
193 loc ** exist ** algo ** size * imp **
194
195 - When there is free text in the SYNOPSIS and that free text contains
196 the .Nm macro, groff somehow understands to treat the .Nm as an in-line
197 macro, while mandoc treats it as a block macro and breaks the line.
198 No idea how the logic for distinguishing in-line and block instances
199 should be, needs investigation.
200 uqs@ Thu, 2 Jun 2011 11:03:51 +0200
201 uqs@ Thu, 2 Jun 2011 11:33:35 +0200
202 loc * exist ** algo *** size * imp **
203
204 --- missing man features -----------------------------------------------
205
206 - -T[x]html doesn't stipulate non-collapsing spaces in literal mode
207
208 --- missing tbl features -----------------------------------------------
209
210 - look at the POSIX manuals in the books/man-pages-posix port,
211 they use some unsupported tbl(7) features.
212 loc * exist ** algo ** size ** imp ***
213
214 - use Unicode U+2500 to U+256C for table borders
215 in tbl(7) -Tutf-8 output
216 suggested by bentley@ Tue, 14 Oct 2014 04:10:55 -0600
217 loc * exist ** algo * size * imp **
218
219 - allow standalone `.' to be interpreted as an end-of-layout
220 delimiter instead of being thrown away as a no-op roff line
221 reported by Yuri Pankov, Wed 18 May 2011 11:34:59 CEST
222 loc ** exist ** algo ** size * imp **
223
224 --- missing eqn features -----------------------------------------------
225
226 - The "size" keyword is parsed, but ignored by the formatter.
227 loc * exist * algo * size * imp *
228
229 - The spacing characters `~', `^', and tab are currently ignored,
230 see User's Guide (Second Edition) page 2 section 4.
231 loc * exist * algo ** size * imp **
232
233 - Mark and lineup are parsed and ignored,
234 see User's Guide (Second Edition) page 5 section 15.
235 loc ** exist ** algo ** size ** imp **
236
237 --- missing misc features ----------------------------------------------
238
239 - italic correction (\/) in PostScript mode
240 Werner LEMBERG on groff at gnu dot org Sun, 10 Nov 2013 12:47:46
241 loc ** exist ** algo * size * imp *
242
243 - When makewhatis(8) encounters a FATAL parse error,
244 it silently treats the file as formatted, which makes no sense
245 at all for paths like man1/foo.1 - and which also contradicts
246 what the manual says at the end of the description.
247 The end result will be ENOENT for file names returned
248 by mansearch() in manpage.file.
249 loc * exist * algo * size * imp **
250
251 - makewhatis(8) for preformatted pages:
252 parse the section number from the header line
253 and compare to the section number from the directory name
254 loc * exist * algo * size * imp **
255
256 - Does makewhatis(8) detect missing NAME sections, missing names,
257 and missing descriptions in all the file formats?
258 loc * exist * algo * size * imp ***
259
260 - clean up escape sequence handling, creating three classes:
261 (1) fully implemented, or parsed and ignored without loss of content
262 (2) unimplemented, potentially causing loss of content
263 or serious mangling of formatting (e.g. \n) -> ERROR
264 see textproc/mgdiff(1) for nice examples
265 (3) undefined, just output the character -> perhaps WARNING
266 loc *** exist ** algo ** size ** imp *** (parser reorg helps)
267
268 - kettenis wants base roff, ms, and me Fri, 1 Jan 2010 22:13:15 +0100 (CET)
269 loc ** exist ** algo ** size *** imp *
270
271 --- compatibility checks -----------------------------------------------
272
273 - write a configure check for [[:<:]] support and provide some
274 fallback for whatis(1) when it doesn't work;
275 Svyatoslav Mishyn Wed, 17 Dec 2014 11:07:10 +0200
276
277 - is .Bk implemented correctly in modern groff?
278 sobrado@ Tue, 19 Apr 2011 22:12:55 +0200
279
280 - compare output to Heirloom roff, Solaris roff, and
281 http://repo.or.cz/w/neatroff.git http://litcave.rudi.ir/
282
283 - look at AT&T DWB http://www2.research.att.com/sw/download
284 Carsten Kunze <carsten dot kunze at arcor dot de> has patches
285 Mon, 4 Aug 2014 17:01:28 +0200
286
287 - look at pages generated from reStructeredText, e.g. devel/mercurial hg(1)
288 These are a weird mixture of man(7) and custom autogenerated low-level
289 roff stuff. Figure out to what extent we can cope.
290 For details, see http://docutils.sourceforge.net/rst.html
291 noted by stsp@ Sat, 24 Apr 2010 09:17:55 +0200
292 reminded by nicm@ Mon, 3 May 2010 09:52:41 +0100
293
294 - look at pages generated from ronn(1) github.com/rtomayko/ronn
295 (based on markdown)
296
297 - look at pages generated from Texinfo source by yat2m, e.g. security/gnupg
298 First impression is not that bad.
299
300 - look at pages generated by pandoc; see
301 https://github.com/jgm/pandoc/blob/master/src/Text/Pandoc/Writers/Man.hs
302 porting planned by kili@ Thu, 19 Jun 2014 19:46:28 +0200
303
304 - check compatibility with Plan9:
305 http://swtch.com/usr/local/plan9/tmac/tmac.an
306 http://swtch.com/plan9port/man/man7/man.html
307 "Anthony J. Bentley" <anthonyjbentley@gmail.com> 28 Dec 2010 21:58:40 -0700
308
309 - check compatibility with the man(7) formatter
310 https://raw.githubusercontent.com/rofl0r/hardcore-utils/master/man.c
311
312 - check compatibility with
313 http://ikiwiki.info/plugins/contrib/mandoc/
314 https://github.com/schmonz/ikiwiki/compare/mandoc
315 Amitai Schlair Mon, 19 May 2014 14:05:53 -0400
316
317 ************************************************************************
318 * formatting issues: ugly output
319 ************************************************************************
320
321 - revisit empty in-line macros
322 look at the difference between "Em x Em ." and "Sq x Em ."
323 Carsten Kunze Fri, 12 Dec 2014 00:15:41 +0100
324 loc *** exist *** algo *** size * imp **
325
326 - a column list with blank `Ta' cells triggers a spurious
327 start-with-whitespace printing of a newline
328
329 - In .Bl -column, .It a<tab>"b<tab>c"
330 shows the quotes in groff, but not in mandoc
331 loc * exist *** algo ** size * imp **
332
333 - In .Bl -column,
334 .It Em Authentication<tab>Key Length
335 ought to render "Key Length" with emphasis, too,
336 see OpenBSD iked.conf(5).
337 reported again Nicolas Joly via wiz@ Wed, 12 Oct 2011 00:20:00 +0200
338 loc * exist *** algo *** size ** imp ***
339
340 - empty phrases in .Bl column produce too few blanks
341 try e.g. .Bl -column It Ta Ta
342 reported by millert Fri, 02 Apr 2010 16:13:46 -0400
343 loc * exist *** algo *** size * imp **
344
345 - .%T can have trailing punctuation. Currently, it puts the trailing
346 punctuation into a trailing MDOC_TEXT element inside its own scope.
347 That element should rather be outside its scope, such that the
348 punctuation does not get underlines. This is not trivial to
349 implement because .%T then needs some features of in_line_eoln() -
350 slurp all arguments into one single text element - and one feature
351 of in_line() - put trailing punctuation out of scope.
352 Found in mount_nfs(8) and exports(5), search for "Appendix".
353 loc ** exist ** algo *** size * imp **
354
355 - Trailing punctuation after .%T triggers EOS spacing, at least
356 outside .Rs (eek!). Simply setting ARGSFL_DELIM for .%T is not
357 the right solution, it sends mandoc into an endless loop.
358 reported by Nicolas Joly Sat, 17 Nov 2012 11:49:54 +0100
359 loc * exist ** algo ** size * imp **
360
361 - global variables in the SYNOPSIS of section 3 pages
362 .Vt vs .Vt/.Va vs .Ft/.Va vs .Ft/.Fa ...
363 from kristaps@ Tue, 08 Jun 2010 11:13:32 +0200
364
365 - in enclosures, mandoc sometimes fancies a bogus end of sentence
366 reminded by jmc@ Thu, 23 Sep 2010 18:13:39 +0059
367 loc * exist ** algo *** size * imp ***
368
369 - a line starting with "\fB something" counts as starting with whitespace
370 and triggers a line break; found in audio/normalize-mp3(1)
371 loc ** exist * algo ** size * imp **
372
373 - formatting /usr/local/man/man1/latex2man.1 with groff and mandoc
374 reveals lots of bugs both in groff and mandoc...
375 reported by bentley@ Wed, 22 May 2013 23:49:30 -0600
376
377 --- PDF issues ---------------------------------------------------------
378
379 - PDF output doesn't use a monospaced font for .Bd -literal
380 Example: "mandoc -Tpdf afterboot.8 > output.pdf && pdfviewer output.pdf".
381 Search the text "Routing tables".
382 Also check what PostScript mode does when fixing this.
383 reported by juanfra@ Wed, 04 Jun 2014 21:44:58 +0200
384 instructions from juanfra@ Wed, 11 Jun 2014 02:21:01 +0200
385 add a new <</Type /Font>> block to the PDF files with /BaseFont /Courier
386 and change the /Name from /F0 to the new font (/F5 (?)).
387 loc * exist ** algo ** size * imp **
388
389 --- HTML issues --------------------------------------------------------
390
391 - <dl><dt><dd> formatting is ugly
392 hints are easy to find on the web, e.g.
393 http://stackoverflow.com/questions/1713048/
394 see also matthew@ Fri, 18 Jul 2014 19:25:12 -0700
395 loc * exist * algo ** size * imp ***
396
397 - jsg on icb, Nov 3, 2014:
398 try to guess Xr in man(7) for hyperlinking
399
400 - The tables used to render the three-part page headers actually force
401 the width of the <body> to the max-width given for <html>.
402 Not yet sure how to fix that...
403 Observed by an Anonymous Coward on undeadly.org:
404 http://undeadly.org/cgi?action=article&sid=20140925064244&pid=1
405 loc * exist * algo ** size * imp ***
406
407 - consider whether <var> can be used for Ar Dv Er Ev Fa Va.
408 from bentley@ Wed, 13 Aug 2014 09:17:55 -0600
409
410 - check https://github.com/trentm/mdocml
411
412 ************************************************************************
413 * formatting issues: gratuitous differences
414 ************************************************************************
415
416 - .Fn reopens a new scope after punctuation in mandoc,
417 but closes its scope for good in groff.
418 Do we want to change mandoc or groff?
419 Steffen Nurpmeso Sat, 08 Nov 2014 13:34:59 +0100
420 loc * exist ** algo ** size * imp **
421
422 - In .Bl -enum -width 0n, groff continues one the same line after
423 the number, mandoc breaks the line.
424 mail to kristaps@ Mon, 20 Jul 2009 02:21:39 +0200
425 loc * exist ** algo ** size * imp **
426
427 - .Pp between two .It in .Bl -column should produce one,
428 not two blank lines, see e.g. login.conf(5).
429 reported by jmc@ Sun, 17 Apr 2011 14:04:58 +0059
430 reported again by sthen@ Wed, 18 Jan 2012 02:09:39 +0000 (UTC)
431 loc * exist *** algo ** size * imp **
432
433 - If the *first* line after .It is .Pp, break the line right after
434 the tag, do not pad with space characters before breaking.
435 See the description of the a, c, and i commands in sed(1).
436 loc * exist ** algo ** size * imp **
437
438 - If the first line after .It is .D1, do not assert a blank line
439 in between, see for example tmux(1).
440 reported by nicm@ 13 Jan 2011 00:18:57 +0000
441 loc * exist ** algo ** size * imp **
442
443 - Trailing punctuation after .It should trigger EOS spacing.
444 reported by Nicolas Joly Sat, 17 Nov 2012 11:49:54 +0100
445 Probably, this should be fixed somewhere in termp_it_pre(), not sure.
446 loc * exist ** algo ** size * imp **
447
448 - .Nx 1.0a
449 should be "NetBSD 1.0A", not "NetBSD 1.0a",
450 see OpenBSD ccdconfig(8).
451 loc * exist * algo * size * imp **
452
453 - In .Bl -tag, if a tag exceeds the right margin and must be continued
454 on the next line, it must be indented by -width, not width+1;
455 see "rule block|pass" in OpenBSD ifconfig(8).
456 loc * exist *** algo ** size * imp **
457
458 - When the -width string contains macros, the macros must be rendered
459 before measuring the width, for example
460 .Bl -tag -width ".Dv message"
461 in magic(5), located in src/usr.bin/file, is the same
462 as -width 7n, not -width 11n.
463 The same applies to .Bl -column column widths;
464 reported again by Nicolas Joly Thu, 1 Mar 2012 13:41:26 +0100 via wiz@ 5 Mar
465 reported again by Franco Fichtner Fri, 27 Sep 2013 21:02:28 +0200
466 loc *** exist *** algo *** size ** imp ***
467 An easy partial fix would be to just skip the first word if it starts
468 with a dot, including any following white space, when measuring.
469 loc * exist * algo * size * imp ***
470
471 - The \& zero-width character counts as output.
472 That is, when it is alone on a line between two .Pp,
473 we want three blank lines, not two as in mandoc.
474 loc ** exist ** algo ** size * imp **
475
476 - Header lines of excessive length:
477 Port OpenBSD man_term.c rev. 1.25 to mdoc_term.c
478 and document it in mdoc(7) and man(7) COMPATIBILITY
479 found while talking to Chris Bennett
480 loc * exist * algo * size * imp *
481
482 - trailing whitespace must be ignored even when followed by a font escape,
483 see for example
484 makes
485 \fBdig \fR
486 operate in batch mode
487 in dig(1).
488 loc ** exist ** algo ** size * imp **
489
490 ************************************************************************
491 * portability
492 ************************************************************************
493
494 - word boundaries in regular expressions for whatis(1)
495 set up config tests to use [[:<:]], \<, or nothing
496 reminded by Peter Bray Fri, 03 Apr 2015 23:02:16 +1100
497
498 ************************************************************************
499 * warning issues
500 ************************************************************************
501
502 - check that MANDOCERR_BADTAB is thrown in the right cases,
503 i.e. when finding a literal tab character in fill mode,
504 and possibly change the wording of the warning message
505 to refer to fill mode, not literal mode
506 See the mail from Werner LEMBERG on the groff list,
507 Fri, 14 Feb 2014 18:54:42 +0100 (CET)
508 loc * exist ** algo ** size * imp **
509
510 - warn about attempts to call non-callable macros
511 Steffen Nurpmeso Tue, 11 Nov 2014 22:55:16 +0100
512 Note that formatting is inconsistent in groff.
513 .Fn Po prints "Po()", .Ar Sh prints "file ..." and no "Sh".
514 Relatively hard because the relevant code is scattered
515 all over mdoc_macro.c and all subtly different.
516 loc ** exist ** algo ** size ** imp **
517
518 - warn about "new sentence, new line"
519 loc ** exist ** algo *** size * imp **
520
521 - mandoc_special does not really check the escape sequence,
522 but just the overall format
523 loc ** exist ** algo *** size ** imp **
524
525 - integrate mdoclint into mandoc ("end-of-line whitespace" thread)
526 from jmc@ Mon, 13 Jul 2009 17:12:09 +0100
527 from kristaps@ Mon, 13 Jul 2009 18:34:53 +0200
528 from jmc@ Mon, 13 Jul 2009 17:45:37 +0059
529 from kristaps@ Mon, 13 Jul 2009 19:02:03 +0200
530 (mostly done, check what remains)
531
532 - -Tlint parser errors and warnings to stdout
533 to tech@mdocml, naddy@ Wed, 28 Sep 2011 11:21:46 +0200
534 wait! kristaps@ Sun, 02 Oct 2011 17:12:52 +0200
535
536 - for system errors, use errno/strerror/warn/err
537
538 ************************************************************************
539 * documentation issues
540 ************************************************************************
541
542 - mention hyphenation rules:
543 breaking at letter-letter in text mode (not macro args)
544 proper hyphenation is unimplemented
545
546 - talk about spacing around delimiters
547 to jmc@, kristaps@ Sat, 23 Apr 2011 17:41:27 +0200
548
549 - mark macros as: page structure domain, manual domain, general text domain
550 is this useful?
551
552 - mention /usr/share/misc/mdoc.template in mdoc(7)?
553
554 - Is all the content from http://www.std.com/obi/BSD/doc/usd/28.tbl/tbl
555 covered in tbl(7)?
556
557 ************************************************************************
558 * performance issues
559 ************************************************************************
560
561 - Why are we using MAP_SHARED, not MAP_PRIVATE for mmap(2)?
562 How does SQLITE_CONFIG_PAGECACHE actually work? Document it!
563 from kristaps@ Sat, 09 Aug 2014 13:51:36 +0200
564
565 Several areas can be cleaned up to make mandoc even faster. These are
566
567 - improve hashing mechanism for macros (quite important: performance)
568
569 - improve hashing mechanism for characters (not as important)
570
571 - the PDF file is HUGE: this can be reduced by using relative offsets
572
573 - instead of re-initialising the roff predefined-strings set before each
574 parse, create a read-only version the first time and copy it
575 loc * exist ** algo ** size * imp **
576
577 ************************************************************************
578 * structural issues
579 ************************************************************************
580
581 - Improve -O suboption parsing. Do it in the main program such that
582 errors can be reported. Pay attention to distinguishing the
583 mandoc(1) and apropos(1) styles of both options.
584 loc ** exist * algo ** size ** imp ***
585
586 - Use libz directly instead of forking gunzip(1).
587 Suggested by bapt at FreeBSD among others.
588
589 - We use the input line number at several places to distinguish
590 same-line from different-line input. That plainly doesn't work
591 with user-defined macros, leading to random breakage.
592
593 - Find better ways to prevent endless loops
594 in roff(7) macro and string expansion.
595
596 - Finish cleanup of date handling.
597 Decide which formats should be recognized where.
598 Update both mdoc(7) and man(7) documentation.
599 Triggered by Tim van der Molen Tue, 22 Feb 2011 20:30:45 +0100
600
601 - struct mparse refactoring
602 Steffen Nurpmeso Thu, 04 Sep 2014 12:50:00 +0200
603
604 - Consider creating some views that will make the database more
605 readable from the sqlite3 shell. Consider using them to
606 abstract from the database structure, too.
607 suggested by espie@ Sat, 19 Apr 2014 14:52:57 +0200
608
609 ************************************************************************
610 * CGI issues
611 ************************************************************************
612
613 - Enable HTTP compression by detecting gzip encoding and filtering
614 output through libz.
615 - Sandbox (see OpenSSH).
616 - Enable caching support via HTTP 304 and If-Modified-Since.
617 - Allow for cgi.h to be overridden by CGI environment variables.
618 Otherwise, binary distributions will inherit the compile-time
619 behaviour, which is not optimal.
620 - Have Mac OSX systems automatically disable -static compilation of the
621 CGI: -static isn't supported.
622
623 ************************************************************************
624 * to improve in the groff_mdoc(7) macros
625 ************************************************************************
626
627 - use uname(1) to set doc-default-operating-system at install time
628 tobimensch Mon, 1 Dec 2014 00:25:07 +0100