#
Chapter 10
Bugs and limitations

- Compiling large files takes too much time.

- There is no support for rationals, complex numbers or extended-precision integers (bignums).

- The (non-standard) macros `let-optionals, let-macro` and `define-entry-point` currently don't work in combination with the high-level macro system.

- The maximal number of arguments that may be passed to a compiled procedure or macro is 126 (or 1024 on x86 platforms). A macro-definition that has a single rest-parameter can have any number of arguments.

- The maximum number of values that can be passed to continuations captured using `call-with-current-continuation` is 126.

- Some numeric procedures are missing since Chicken does not support the full numeric tower.

- The compiler and programs generated by it need a fairly large amount of memory.

- If a known procedure has unused arguments, but is always called without those parameters, then the optimizer ``repairs'' the procedure in certain situations and removes the parameter from the lambda-list.

- `eval-when` doesn't allow toplevel definitions inside its body in combination with hygienic macros.

- `define-values` can not be used in internal definitions when the hygienic macro system is used.

- `port-position` currently works only for input ports.

- Leaf routine optimization can theoretically result in code that thrashes, if tight loops perform excessively many mutations.

- Building Chicken on RS/6000 systems under AIX is currently not possible, due to strange assembler errors during compilation of the compiler sources.

- If `eval` is invoked with `scheme-report-environment` or `null-environment` inside the interpreter, then non-standard syntax is still visible, unless the interpreter has been started with the `-strict` option.

- A source file to be compiled may not begin with the `#` character if it is not a script-file (beginning with `#!`).

- When the highlevel macro system is used, line number information is not properly maintained.