SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

 
 

perl-FFI-Platypus rpm build for : openSUSE Tumbleweed. For other distributions click perl-FFI-Platypus.

Name : perl-FFI-Platypus
Version : 2.08 Vendor : obs://build_opensuse_org/home:huakim:matrix
Release : 1.6 Date : 2024-10-12 05:15:00
Group : Unspecified Source RPM : perl-FFI-Platypus-2.08-1.6.src.rpm
Size : 0.94 MB
Packager : (none)
Summary : Write Perl bindings to non-Perl libraries with FFI. No XS required
Description :
Platypus is a library for creating interfaces to machine code libraries
written in languages like C, C++, Go, Fortran, Rust, Pascal. Essentially
anything that gets compiled into machine code. This implementation uses at
https://sourceware.org/libffi/ to accomplish this task. at
https://sourceware.org/libffi/ is battle tested by a number of other
scripting and virtual machine languages, such as Python and Ruby to serve a
similar role. There are a number of reasons why you might want to write an
extension with Platypus instead of XS:

* FFI / Platypus does not require messing with the guts of Perl

XS is less of an API and more of the guts of perl splayed out to do
whatever you want. That may at times be very powerful, but it can also be a
frustrating exercise in hair pulling.

* FFI / Platypus is portable

Lots of languages have FFI interfaces, and it is subjectively easier to
port an extension written in FFI in Perl or another language to FFI in
another language or Perl. One goal of the Platypus Project is to reduce
common interface specifications to a common format like JSON that could be
shared between different languages.

* FFI / Platypus could be a bridge to Raku

One of those \"other\" languages could be Raku and Raku already has an FFI
interface I am told.

* FFI / Platypus can be reimplemented

In a bright future with multiple implementations of Perl 5, each
interpreter will have its own implementation of Platypus, allowing
extensions to be written once and used on multiple platforms, in much the
same way that Ruby-FFI extensions can be use in Ruby, JRuby and Rubinius.

* FFI / Platypus is pure perl (sorta)

One Platypus script or module works on any platform where the libraries it
uses are available. That means you can deploy your Platypus script in a
shared filesystem where they may be run on different platforms. It also
means that Platypus modules do not need to be installed in the platform
specific Perl library path.

* FFI / Platypus is not C or C++ centric

XS is implemented primarily as a bunch of C macros, which requires at least
some understanding of C, the C pre-processor, and some C++ caveats (since
on some platforms Perl is compiled and linked with a C++ compiler).
Platypus on the other hand could be used to call other compiled languages,
like Fortran, Go, Rust, Pascal, C++, or even assembly, allowing you to
focus on your strengths.

* FFI / Platypus does not require a parser

Inline isolates the extension developer from XS to some extent, but it also
requires a parser. The various Inline language bindings are a great
technical achievement, but I think writing a parser for every language that
you want to interface with is a bit of an anti-pattern.

This document consists of an API reference, a set of examples, some support
and development (for contributors) information. If you are new to Platypus
or FFI, you may want to skip down to the EXAMPLES to get a taste of what
you can do with Platypus.

Platypus has extensive documentation of types at FFI::Platypus::Type and
its custom types API at FFI::Platypus::API.

You are *strongly* encouraged to use API level 2 for all new code. There
are a number of improvements and design fixes that you get for free. You
should even consider updating existing modules to use API level 2 where
feasible. How do I do that you might ask? Simply pass in the API level to
the platypus constructor.

my $ffi = FFI::Platypus->new( api => 2 );

The Platypus documentation has already been updated to assume API level 1.

RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/home:/huakim:/matrix/openSUSE_Tumbleweed/x86_64

Content of RPM  Provides Requires

Hmm ... It's impossible ;-) This RPM doesn't exist on any FTP server

Provides :
libplfill.so()(64bit)
perl(FFI::Build)
perl(FFI::Build::File::Base)
perl(FFI::Build::File::C)
perl(FFI::Build::File::CXX)
perl(FFI::Build::File::Library)
perl(FFI::Build::File::Object)
perl(FFI::Build::MM)
perl(FFI::Build::MM::FBX)
perl(FFI::Build::Platform)
perl(FFI::Build::Plugin)
perl(FFI::Build::PluginData)
perl(FFI::Platypus)
perl(FFI::Platypus)
perl(FFI::Platypus::API)
perl(FFI::Platypus::Buffer)
perl(FFI::Platypus::Bundle)
perl(FFI::Platypus::Closure)
perl(FFI::Platypus::ClosureData)
perl(FFI::Platypus::Constant)
perl(FFI::Platypus::DL)
perl(FFI::Platypus::Function)
perl(FFI::Platypus::Function::Function)
perl(FFI::Platypus::Function::Wrapper)
perl(FFI::Platypus::Internal)
perl(FFI::Platypus::Lang)
perl(FFI::Platypus::Lang::ASM)
perl(FFI::Platypus::Lang::C)
perl(FFI::Platypus::Lang::Win32)
perl(FFI::Platypus::Legacy)
perl(FFI::Platypus::Memory)
perl(FFI::Platypus::Record)
perl(FFI::Platypus::Record::Meta)
perl(FFI::Platypus::Record::TieArray)
perl(FFI::Platypus::ShareConfig)
perl(FFI::Platypus::Type)
perl(FFI::Platypus::Type::PointerSizeBuffer)
perl(FFI::Platypus::Type::StringArray)
perl(FFI::Platypus::Type::StringPointer)
perl(FFI::Platypus::Type::WideString)
perl(FFI::Platypus::TypeParser)
perl(FFI::Platypus::TypeParser::Version0)
perl(FFI::Platypus::TypeParser::Version1)
perl(FFI::Platypus::TypeParser::Version2)
perl(FFI::Probe)
perl(FFI::Probe::Runner)
perl(FFI::Probe::Runner::Builder)
perl(FFI::Probe::Runner::Result)
perl(FFI::Temp)
perl-FFI-Platypus
perl-FFI-Platypus(x86-64)

Requires :
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.38)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libffi.so.8()(64bit)
libffi.so.8(LIBFFI_BASE_8.0)(64bit)
libffi.so.8(LIBFFI_CLOSURE_8.0)(64bit)
libffi.so.8(LIBFFI_COMPLEX_8.0)(64bit)
perl = 5.40.0
perl(Capture::Tiny)
perl(ExtUtils::MakeMaker) >= 7.12
perl(FFI::CheckLib) >= 0.05
perl(IPC::Cmd)
perl(JSON::PP)
perl(List::Util) >= 1.45
perl(autodie)
perl(constant) >= 1.32
perl(parent)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1


Content of RPM :
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File/Base.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File/C.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File/CXX.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File/Library.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/File/Object.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/MM.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/Platform.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/Plugin.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Build/PluginData.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/API.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Buffer.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Bundle.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Closure.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Constant.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/DL.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Function.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Internal.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Lang
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Lang.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Lang/ASM.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Lang/C.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Lang/Win32.pm
/usr/lib/perl5/vendor_perl/5.40.0/x86_64-linux-thread-multi/FFI/Platypus/Legacy.pm
There is 189 files more in these RPM.

 
ICM