Affix

 view release on metacpan or  search on metacpan

lib/Affix/Build.pod  view on Meta::CPAN

=head1 SUPPORTED LANGUAGES

C<Affix::Build> attempts to locate the necessary binaries in your system C<PATH>.

=head3 C / C++

Automatically handles C<-fPIC> on non-Windows platforms.

=over

=item * B<Extensions:> C<.c>, C<.cpp>, C<.cxx>, C<.cc>

=item * B<Known Compilers:> C<cc>, C<gcc>, C<clang>, C<cl> (MSVC), C<c++>, C<g++>, C<icx>.

=back

=head3 Rust

=over

=item * B<Extensions:> C<.rs>

=item * B<Compiler:> C<rustc>

=back

B<Windows Note:> If running under Strawberry Perl (MinGW), you must have the GNU ABI target installed via C<rustup> so
the objects can link against Perl's GCC:

    rustup target add x86_64-pc-windows-gnu

=head3 C# / F#

Uses B<NativeAOT> to compile .NET code directly to unmanaged machine code. Your C# source must tag exported methods
with C<[UnmanagedCallersOnly]>.

=over

=item * B<Extensions:> C<.cs>, C<.fs>

=item * B<Compiler:> C<dotnet> (SDK 8.0 or newer required)

=back

=head3 Go

=over

=item * B<Extensions:> C<.go>

=item * B<Compiler:> C<go> or C<gccgo>

=back

B<Caveats:>

=over

=item * In Polyglot mode, requires C<gccgo> or standard C<go> with C<c-archive> support.

=item * The Go runtime spins up background threads (for GC and scheduling) that do not shut down cleanly when a shared library is unloaded. This can cause access violations on Windows during program exit. If you encounter segmentation faults during g...

=back

=head3 Zig

=over

=item * B<Extensions:> C<.zig>

=item * B<Compiler:> C<zig>

=back

=head3 Fortran

=over

=item * B<Extensions:> C<.f>, C<.f90>, C<.f95>, C<.for>

=item * B<Compilers:> C<gfortran>, C<ifx>, C<ifort>

=back

=head3 Assembly

Correctly handles ARM64 (AArch64) via the system compiler and x86_64 via NASM.

=over

=item * B<Extensions:> C<.asm> (Intel syntax), C<.s> (AT&T/GNU syntax)

=item * B<Compilers:> C<nasm> (for .asm), System C<cc> (for .s)

=back

=head3 Other Languages

Support is also included for:

=over

=item * B<Odin> (C<.odin>)

=item * B<D> (C<.d>) - via C<dmd>, C<ldc2>, or C<gdc>

=item * B<Nim> (C<.nim>)

=item * B<V> (C<.v>)

=item * B<Swift> (C<.swift>)

=item * B<Pascal> (C<.pas>, C<.pp>) - via C<fpc> (Free Pascal)

=item * B<Crystal> (C<.cr>)

=item * B<Haskell> (C<.hs>) - via C<ghc>

=item * B<Cobol> (C<.cob>, C<.cbl>) - via C<cobc> (GnuCOBOL)

=item * B<OCaml> (C<.ml>) - via C<ocamlopt>



( run in 0.857 second using v1.01-cache-2.11-cpan-39bf76dae61 )