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.
When the highlevel macro system is used, line number information is not properly maintained.
format is not reentrant. This means that recursive invocation of this procedure (either inside print-object methods or record-printer defined with define-record-printer will not work.