=begin pod :kind("Type") :subkind("class") :category("basic")

=TITLE class Compiler

=SUBTITLE Information related to the compiler that is being used

    class Compiler does Systemic {}

Built-in class for providing compiler related information.  Usually accessed
through the C<compiler> attribute of the
L«C<$*RAKU>|/language/variables#Dynamic_variables» dynamic variable.

    say $*RAKU.compiler; # OUTPUT: «rakudo (2020.02.16.g.28.bd.4247.a)␤»

B<Note>: Before Rakudo version 2020.1 this was only available through
the C<compiler> attribute of the C<$*PERL> dynamic variable. Since
Rakudo version 2020.1 this is available through both the C<$*RAKU>
and the C<$*PERL> variables.

=head1 Methods

=head2 method id

Returns an unique identifier, a long hexadecimal string

=head2 method release

It's empty, but it might contain the release number for specific releases.

=head2 method codename

It's empty, but it might contain the codename for specific releases.


=head2 method backend

    method backend()

Since Rakudo version 2020.02, returns the name of the compiler's backend.


=head2 method build-date

    method build-date()

Up to Rakudo version 2019.03.1, it returned the date when it was built.

    say $*PERL.compiler.build-date; # OUTPUT: «2018-05-05T21:49:43Z␤»

=head2 method verbose-config

    method verbose-config(:$say)

If C<$say> is C<True>, it prints the different items included in the
configuration of the compiler; if it is not, returns a C<Hash> with the same
information.

    say $*RAKU.compiler.verbose-config; # OUTPUT: «distro::auth=https://www.opensuse.org/␤distro::desc=2018-05-06T09:19:17.571307+02:00␤» ... And the rest of the configuration


See Also: L<Systemic|/type/Systemic>

=end pod

# vim: expandtab softtabstop=4 shiftwidth=4 ft=perl6
