+# List of funcs in the public API that aren't also marked as experimental nor
+# deprecated.
+my @missing_api = grep $funcflags{$_}{flags} =~ /A/ && $funcflags{$_}{flags} !~ /[MD]/ && !$docs{api}{$_}, keys %funcflags;
+output('perlapi', <<'_EOB_', $docs{api}, \@missing_api, <<'_EOE_');
+|=encoding UTF-8
+|
+|=head1 NAME
+|
+|perlapi - autogenerated documentation for the perl public API
+|
+|=head1 DESCRIPTION
+|X<Perl API> X<API> X<api>
+|
+|This file contains the documentation of the perl public API generated by
+|F<embed.pl>, specifically a listing of functions, macros, flags, and variables
+|that may be used by extension writers. L<At the end|/Undocumented functions>
+|is a list of functions which have yet to be documented. The interfaces of
+|those are subject to change without notice. Anything not listed here is
+|not part of the public API, and should not be used by extension writers at
+|all. For these reasons, blindly using functions listed in proto.h is to be
+|avoided when writing extensions.
+|
+|In Perl, unlike C, a string of characters may generally contain embedded
+|C<NUL> characters. Sometimes in the documentation a Perl string is referred
+|to as a "buffer" to distinguish it from a C string, but sometimes they are
+|both just referred to as strings.
+|
+|Note that all Perl API global variables must be referenced with the C<PL_>
+|prefix. Again, those not listed here are not to be used by extension writers,
+|and can be changed or removed without notice; same with macros.
+|Some macros are provided for compatibility with the older,
+|unadorned names, but this support may be disabled in a future release.
+|
+|Perl was originally written to handle US-ASCII only (that is characters
+|whose ordinal numbers are in the range 0 - 127).
+|And documentation and comments may still use the term ASCII, when
+|sometimes in fact the entire range from 0 - 255 is meant.
+|
+|The non-ASCII characters below 256 can have various meanings, depending on
+|various things. (See, most notably, L<perllocale>.) But usually the whole
+|range can be referred to as ISO-8859-1. Often, the term "Latin-1" (or
+|"Latin1") is used as an equivalent for ISO-8859-1. But some people treat
+|"Latin1" as referring just to the characters in the range 128 through 255, or
+|somethimes from 160 through 255.
+|This documentation uses "Latin1" and "Latin-1" to refer to all 256 characters.
+|
+|Note that Perl can be compiled and run under either ASCII or EBCDIC (See
+|L<perlebcdic>). Most of the documentation (and even comments in the code)
+|ignore the EBCDIC possibility.
+|For almost all purposes the differences are transparent.
+|As an example, under EBCDIC,
+|instead of UTF-8, UTF-EBCDIC is used to encode Unicode strings, and so
+|whenever this documentation refers to C<utf8>
+|(and variants of that name, including in function names),
+|it also (essentially transparently) means C<UTF-EBCDIC>.
+|But the ordinals of characters differ between ASCII, EBCDIC, and
+|the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy a different
+|number of bytes than in UTF-8.
+|
+|The listing below is alphabetical, case insensitive.
+|
+_EOB_
+|
+|=head1 AUTHORS
+|
+|Until May 1997, this document was maintained by Jeff Okamoto
+|<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
+|
+|With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
+|Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
+|Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
+|Stephen McCamant, and Gurusamy Sarathy.
+|
+|API Listing originally by Dean Roehrich <roehrich@cray.com>.
+|
+|Updated to be autogenerated from comments in the source by Benjamin Stuhl.
+|
+|=head1 SEE ALSO
+|
+|L<perlguts>, L<perlxs>, L<perlxstut>, L<perlintern>
+|