<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yuki Kimoto</title>
    <description>The latest articles on DEV Community by Yuki Kimoto (@yukikimoto).</description>
    <link>https://dev.to/yukikimoto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F592222%2Fb7033b06-7559-4902-9325-49521389b3c4.jpg</url>
      <title>DEV Community: Yuki Kimoto</title>
      <link>https://dev.to/yukikimoto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yukikimoto"/>
    <language>en</language>
    <item>
      <title>SPVM standard modules on CPAN</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Mon, 25 Aug 2025 04:01:06 +0000</pubDate>
      <link>https://dev.to/yukikimoto/spvm-standard-modules-on-cpan-3m98</link>
      <guid>https://dev.to/yukikimoto/spvm-standard-modules-on-cpan-3m98</guid>
      <description>&lt;p&gt;There are SPVM standard modules on CPAN.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Address" rel="noopener noreferrer"&gt;SPVM::Address&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Array" rel="noopener noreferrer"&gt;SPVM::Array&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Bool" rel="noopener noreferrer"&gt;SPVM::Bool&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Byte" rel="noopener noreferrer"&gt;SPVM::Byte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::ByteList" rel="noopener noreferrer"&gt;SPVM::ByteList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Callback" rel="noopener noreferrer"&gt;SPVM::Callback&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Callback::Grep" rel="noopener noreferrer"&gt;SPVM::Callback::Grep&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Callback::Map" rel="noopener noreferrer"&gt;SPVM::Callback::Map&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Callback::MapExpand" rel="noopener noreferrer"&gt;SPVM::Callback::MapExpand&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Cloneable" rel="noopener noreferrer"&gt;SPVM::Cloneable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Cloner" rel="noopener noreferrer"&gt;SPVM::Cloner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::CommandInfo" rel="noopener noreferrer"&gt;SPVM::CommandInfo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparable" rel="noopener noreferrer"&gt;SPVM::Comparable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator" rel="noopener noreferrer"&gt;SPVM::Comparator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator::Double" rel="noopener noreferrer"&gt;SPVM::Comparator::Double&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator::Float" rel="noopener noreferrer"&gt;SPVM::Comparator::Float&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator::Int" rel="noopener noreferrer"&gt;SPVM::Comparator::Int&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator::Long" rel="noopener noreferrer"&gt;SPVM::Comparator::Long&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Comparator::String" rel="noopener noreferrer"&gt;SPVM::Comparator::String&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Complex_2d" rel="noopener noreferrer"&gt;SPVM::Complex_2d&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Complex_2f" rel="noopener noreferrer"&gt;SPVM::Complex_2f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Double" rel="noopener noreferrer"&gt;SPVM::Double&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::DoubleList" rel="noopener noreferrer"&gt;SPVM::DoubleList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::EqualityChecker" rel="noopener noreferrer"&gt;SPVM::EqualityChecker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::EqualityChecker::Address" rel="noopener noreferrer"&gt;SPVM::EqualityChecker::Address&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::EqualityCheckable" rel="noopener noreferrer"&gt;SPVM::EqualityCheckable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error" rel="noopener noreferrer"&gt;SPVM::Error&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::Compile" rel="noopener noreferrer"&gt;SPVM::Error::Compile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::FieldNotSpecified" rel="noopener noreferrer"&gt;SPVM::Error::FieldNotSpecified&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::MethodCallNotPermitted" rel="noopener noreferrer"&gt;SPVM::Error::MethodCallNotPermitted&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::NotSupported" rel="noopener noreferrer"&gt;SPVM::Error::NotSupported&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::System" rel="noopener noreferrer"&gt;SPVM::Error::System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Error::Unicode::InvalidUTF8" rel="noopener noreferrer"&gt;SPVM::Error::Unicode::InvalidUTF8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Float" rel="noopener noreferrer"&gt;SPVM::Float&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::FloatList" rel="noopener noreferrer"&gt;SPVM::FloatList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Fn" rel="noopener noreferrer"&gt;SPVM::Fn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Format" rel="noopener noreferrer"&gt;SPVM::Format&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Hash" rel="noopener noreferrer"&gt;SPVM::Hash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Hash::Entry" rel="noopener noreferrer"&gt;SPVM::Hash::Entry&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::ByteList" rel="noopener noreferrer"&gt;SPVM::Immutable::ByteList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::DoubleList" rel="noopener noreferrer"&gt;SPVM::Immutable::DoubleList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::FloatList" rel="noopener noreferrer"&gt;SPVM::Immutable::FloatList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::IntList" rel="noopener noreferrer"&gt;SPVM::Immutable::IntList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::LongList" rel="noopener noreferrer"&gt;SPVM::Immutable::LongList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::ShortList" rel="noopener noreferrer"&gt;SPVM::Immutable::ShortList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Immutable::StringList" rel="noopener noreferrer"&gt;SPVM::Immutable::StringList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Int" rel="noopener noreferrer"&gt;SPVM::Int&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::IntList" rel="noopener noreferrer"&gt;SPVM::IntList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::List" rel="noopener noreferrer"&gt;SPVM::List&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Long" rel="noopener noreferrer"&gt;SPVM::Long&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::LongList" rel="noopener noreferrer"&gt;SPVM::LongList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native" rel="noopener noreferrer"&gt;SPVM::Native&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Arg" rel="noopener noreferrer"&gt;SPVM::Native::Arg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::BasicType" rel="noopener noreferrer"&gt;SPVM::Native::BasicType&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::ClassFile" rel="noopener noreferrer"&gt;SPVM::Native::ClassFile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::ClassVar" rel="noopener noreferrer"&gt;SPVM::Native::ClassVar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Compiler" rel="noopener noreferrer"&gt;SPVM::Native::Compiler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Env" rel="noopener noreferrer"&gt;SPVM::Native::Env&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Field" rel="noopener noreferrer"&gt;SPVM::Native::Field&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Method" rel="noopener noreferrer"&gt;SPVM::Native::Method&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::MethodCall" rel="noopener noreferrer"&gt;SPVM::Native::MethodCall&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Runtime" rel="noopener noreferrer"&gt;SPVM::Native::Runtime&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Native::Stack" rel="noopener noreferrer"&gt;SPVM::Native::Stack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Point" rel="noopener noreferrer"&gt;SPVM::Point&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Point3D" rel="noopener noreferrer"&gt;SPVM::Point3D&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Scope::Guard" rel="noopener noreferrer"&gt;SPVM::Scope::Guard&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Short" rel="noopener noreferrer"&gt;SPVM::Short&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::ShortList" rel="noopener noreferrer"&gt;SPVM::ShortList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Sort" rel="noopener noreferrer"&gt;SPVM::Sort&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::SPVM" rel="noopener noreferrer"&gt;SPVM::SPVM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Stringable" rel="noopener noreferrer"&gt;SPVM::Stringable&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::StringBuffer" rel="noopener noreferrer"&gt;SPVM::StringBuffer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Stringer" rel="noopener noreferrer"&gt;SPVM::Stringer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::StringList" rel="noopener noreferrer"&gt;SPVM::StringList&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Sync::Mutex" rel="noopener noreferrer"&gt;SPVM::Sync::Mutex&lt;/a&gt;&lt;/p&gt;

</description>
      <category>spvm</category>
      <category>perl</category>
      <category>cpan</category>
    </item>
    <item>
      <title>I started to develope SPVM::Mojolicious</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Sat, 09 Aug 2025 00:50:27 +0000</pubDate>
      <link>https://dev.to/yukikimoto/i-started-to-develope-spvmmojolicious-4hif</link>
      <guid>https://dev.to/yukikimoto/i-started-to-develope-spvmmojolicious-4hif</guid>
      <description>&lt;p&gt;I started to develope &lt;a href="https://github.com/yuki-kimoto/SPVM-Mojolicious" rel="noopener noreferrer"&gt;SPVM::Mojolicious&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I released &lt;a href="https://metacpan.org/pod/SPVM::Mojolicious" rel="noopener noreferrer"&gt;SPVM::Mojolicious&lt;/a&gt; on CPAN.&lt;/p&gt;

&lt;p&gt;This is an early release.This project is incomplete.&lt;/p&gt;

&lt;p&gt;We plan to make most Mojolicious features available.&lt;/p&gt;

&lt;p&gt;As SPVM features, we'll be able to create groutines, threads, and executables.&lt;/p&gt;

</description>
      <category>perl</category>
      <category>spvm</category>
    </item>
    <item>
      <title>How to create Mac GUI applications in SPVM?</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Sun, 08 Dec 2024 22:54:18 +0000</pubDate>
      <link>https://dev.to/yukikimoto/how-to-create-mac-gui-applications-in-spvm-ma1</link>
      <guid>https://dev.to/yukikimoto/how-to-create-mac-gui-applications-in-spvm-ma1</guid>
      <description>&lt;p&gt;How to create Mac GUI applications in SPVM?&lt;/p&gt;

&lt;p&gt;See the following content.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM/wiki/Mac-GUI-Applications" rel="noopener noreferrer"&gt;Mac GUI Applications&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SPVM can now create a Mac GUI application. It is an executable file. you can execute it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;% spvmcc -o mac_hello_world mac_hello_world.spvm
% ./mac_hello_world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An alert dialog is shown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb6ajrrbjs471kn5byz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb6ajrrbjs471kn5byz9.png" alt="Image description" width="223" height="165"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>spvm</category>
      <category>perl</category>
      <category>mac</category>
      <category>apple</category>
    </item>
    <item>
      <title>How to create a parallel echo server using goroutines in SPVM?</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Wed, 09 Oct 2024 05:59:12 +0000</pubDate>
      <link>https://dev.to/yukikimoto/how-to-create-a-parallel-echo-server-using-goroutines-in-spvm-4e7p</link>
      <guid>https://dev.to/yukikimoto/how-to-create-a-parallel-echo-server-using-goroutines-in-spvm-4e7p</guid>
      <description>&lt;p&gt;How to create a parallel echo server using goroutines in SPVM?&lt;/p&gt;

&lt;p&gt;I write a parallel echo server using &lt;a href="https://metacpan.org/pod/SPVM::IO::Socket::IP" rel="noopener noreferrer"&gt;SPVM::IO::Socket::IP&lt;/a&gt; and goroutines, channels, select in &lt;a href="https://metacpan.org/pod/SPVM::Go" rel="noopener noreferrer"&gt;SPVM::Go&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See the following test code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM-IO/blob/46649347456d90eb7919c36ec8b169ae9f08c122/t/lib/SPVM/TestUtil.spvm#L45" rel="noopener noreferrer"&gt;run_echo_server_go&lt;/a&gt;&lt;/p&gt;

</description>
      <category>perl</category>
      <category>spvm</category>
    </item>
    <item>
      <title>How to generate an executable file for an AI program using SPVM ?</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Tue, 08 Oct 2024 04:59:31 +0000</pubDate>
      <link>https://dev.to/yukikimoto/how-to-generate-an-executable-file-for-an-ai-program-using-spvm--3eie</link>
      <guid>https://dev.to/yukikimoto/how-to-generate-an-executable-file-for-an-ai-program-using-spvm--3eie</guid>
      <description>&lt;p&gt;Wouldn't you like to output a single executable file from your AI program? Then, you can run the AI ​​program just by copying the executable file to the Raspberry Pi. Here's how to achieve this using SPVM. Here's an example of image recognition using MINIST as an example of AI using deep learning.&lt;/p&gt;

&lt;h4&gt;SPVM program&lt;/h4&gt;

&lt;p&gt;This is an AI program to recognize images using MINIST data.&lt;/p&gt;

&lt;p&gt;It is writen by &lt;a href="https://metacpan.org/pod/SPVM" rel="noopener noreferrer"&gt;SPVM&lt;/a&gt; and &lt;a href="https://metacpan.org/pod/SPVM::R" rel="noopener noreferrer"&gt;SPVM::R&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://github.com/yuki-kimoto/en_deeplearning/blob/master/examples/my_minist_app.spvm" rel="noopener noreferrer"&gt;my_minist_app.spvm&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/yuki-kimoto/en_deeplearning/blob/master/examples/my_minist_app.config" rel="noopener noreferrer"&gt;my_minist_app.config&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://github.com/yuki-kimoto/en_deeplearning/blob/master/examples/network_lib/SPVM/MyAIUtil2.spvm" rel="noopener noreferrer"&gt;network_lib/SPVM/MyAIUtil2.spvm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Install dependent modules.&lt;/p&gt;

&lt;pre&gt;
cpanm SPVM
cpanm SPVM::Errno
cpanm SPVM::File::Basename
cpanm SPVM::File::Spec
cpanm SPVM::FindBin
cpanm SPVM::Math
cpanm SPVM::Regex
cpanm SPVM::Sys
cpanm SPVM::Time::Local
cpanm SPVM::Time::Piece
cpanm SPVM::IO
cpanm SPVM::R
&lt;/pre&gt;

&lt;p&gt;Execute an SPVM program.&lt;/p&gt;

&lt;pre&gt;
spvm -I network_lib/SPVM my_minist_app.spvm
&lt;/pre&gt;

&lt;p&gt;Generate an executable file and execute it.&lt;/p&gt;

&lt;pre&gt;
spvmcc -I network_lib/SPVM -o my_minist_app my_minist_app.spvm

./my_minist_app
&lt;/pre&gt;

&lt;p&gt;I'm not an AI expert, but if you are, I think you can modify this.&lt;/p&gt;

&lt;p&gt;If you're interested in parallelization using threads and goroutines, see also:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://metacpan.org/pod/SPVM::Thread" rel="noopener noreferrer"&gt;SPVM::Thread&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://metacpan.org/pod/SPVM::Go" rel="noopener noreferrer"&gt;SPVM::Go&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>spvm</category>
      <category>perl</category>
      <category>ai</category>
      <category>raspberrypi</category>
    </item>
    <item>
      <title>GitPrep has some new features and bug fixes.</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Thu, 29 Aug 2024 23:30:18 +0000</pubDate>
      <link>https://dev.to/yukikimoto/gitprep-has-some-new-features-and-bug-fixes-3ki</link>
      <guid>https://dev.to/yukikimoto/gitprep-has-some-new-features-and-bug-fixes-3ki</guid>
      <description>&lt;p&gt;GitPrep has some new features and bug fixes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/gitprep" rel="noopener noreferrer"&gt;GitPrep - Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitPrep is portable Github-like system, which can be installed and hosted on your own Unix/Linux server.&lt;/p&gt;

</description>
      <category>gitprep</category>
      <category>perl</category>
    </item>
    <item>
      <title>SPVM::R - A Port of The R Language Features.</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Wed, 21 Aug 2024 00:15:36 +0000</pubDate>
      <link>https://dev.to/yukikimoto/spvmr-a-port-of-the-r-language-features-3m4a</link>
      <guid>https://dev.to/yukikimoto/spvmr-a-port-of-the-r-language-features-3m4a</guid>
      <description>&lt;p&gt;R class in &lt;a href="https://metacpan.org/pod/SPVM" rel="noopener noreferrer"&gt;SPVM&lt;/a&gt; is a port of the &lt;a href="https://www.r-project.org/" rel="noopener noreferrer"&gt;R language&lt;/a&gt; features.&lt;/p&gt;

&lt;h1 id="Features"&gt;
&lt;span&gt;&lt;/span&gt;Features&lt;/h1&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray" rel="noopener noreferrer"&gt;N-dimensional arrays&lt;/a&gt; and &lt;a href="https://metacpan.org/pod/SPVM::R::OP" rel="noopener noreferrer"&gt;their operations&lt;/a&gt;, such as addition, subtraction, multiplication, division, modulo(or remainder), sum, max, min, mean, cumulative sum, cumulative product, trigonometric functions, exponential functions, log functions.&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support of &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Int#seq" rel="noopener noreferrer"&gt;sequence creation&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP#rep" rel="noopener noreferrer"&gt;repetition&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::NDArray#slice" rel="noopener noreferrer"&gt;slice&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::NDArray#order" rel="noopener noreferrer"&gt;order&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::NDArray#sort_asc" rel="noopener noreferrer"&gt;sort&lt;/a&gt; of a n-dimensional array.&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Various types of n-dimensional arrays(&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Byte" rel="noopener noreferrer"&gt;byte&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Short" rel="noopener noreferrer"&gt;short&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Int" rel="noopener noreferrer"&gt;int&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Long" rel="noopener noreferrer"&gt;long&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Float" rel="noopener noreferrer"&gt;float&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Double" rel="noopener noreferrer"&gt;double&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::FloatComplex" rel="noopener noreferrer"&gt;float complex&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::DoubleComplex" rel="noopener noreferrer"&gt;double complex&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::String" rel="noopener noreferrer"&gt;string&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::StringBuffer" rel="noopener noreferrer"&gt;variable-length string&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::OP::Time::Piece" rel="noopener noreferrer"&gt;datetime&lt;/a&gt;).&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support of &lt;a href="https://metacpan.org/pod/SPVM::R::NDArray#NA-Representation" rel="noopener noreferrer"&gt;NA representation&lt;/a&gt;.&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::DataFrame" rel="noopener noreferrer"&gt;Data frame&lt;/a&gt; and &lt;a href="https://metacpan.org/pod/SPVM::R::OP::DataFrame" rel="noopener noreferrer"&gt;its operations&lt;/a&gt;.&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support of &lt;a href="https://metacpan.org/pod/SPVM::R::DataFrame#slice" rel="noopener noreferrer"&gt;slice&lt;/a&gt;(&lt;a href="https://metacpan.org/pod/SPVM::R::OP::DataFrame#subset" rel="noopener noreferrer"&gt;subset&lt;/a&gt;), &lt;a href="https://metacpan.org/pod/SPVM::R::DataFrame#order" rel="noopener noreferrer"&gt;order&lt;/a&gt;, &lt;a href="https://metacpan.org/pod/SPVM::R::DataFrame#sort" rel="noopener noreferrer"&gt;sort&lt;/a&gt; of a data frame.&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="Tutorial"&gt;
&lt;span&gt;&lt;/span&gt;Tutorial&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM-R/wiki/SPVM%3A%3AR-Tutorial" rel="noopener noreferrer"&gt;SPVM::R Tutorial&lt;/a&gt;&lt;/p&gt;

&lt;h1 id="Modules"&gt;
&lt;span&gt;&lt;/span&gt;Modules&lt;/h1&gt;

&lt;h2 id="N-Dimension-Array"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="N"&gt;&lt;/a&gt;N-Dimension Array&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray" rel="noopener noreferrer"&gt;R::NDArray&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Byte" rel="noopener noreferrer"&gt;R::NDArray::Byte&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Short" rel="noopener noreferrer"&gt;R::NDArray::Short&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Int" rel="noopener noreferrer"&gt;R::NDArray::Int&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Float" rel="noopener noreferrer"&gt;R::NDArray::Float&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Double" rel="noopener noreferrer"&gt;R::NDArray::Double&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::FloatComplex" rel="noopener noreferrer"&gt;R::NDArray::FloatComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::DoubleComplex" rel="noopener noreferrer"&gt;R::NDArray::DoubleComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Long" rel="noopener noreferrer"&gt;R::NDArray::Long&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::AnyObject" rel="noopener noreferrer"&gt;R::NDArray::AnyObject&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::String" rel="noopener noreferrer"&gt;R::NDArray::String&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::StringBuffer" rel="noopener noreferrer"&gt;R::NDArray::StringBuffer&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::NDArray::Time::Piece" rel="noopener noreferrer"&gt;R::NDArray::Time::Piece&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="N-Dimension-Array-Operations"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="N1"&gt;&lt;/a&gt;N-Dimension Array Operations&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP" rel="noopener noreferrer"&gt;R::OP&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Byte" rel="noopener noreferrer"&gt;R::OP::Byte&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Short" rel="noopener noreferrer"&gt;R::OP::Short&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Int" rel="noopener noreferrer"&gt;R::OP::Int&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Long" rel="noopener noreferrer"&gt;R::OP::Long&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Float" rel="noopener noreferrer"&gt;R::OP::Float&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Double" rel="noopener noreferrer"&gt;R::OP::Double&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::FloatComplex" rel="noopener noreferrer"&gt;R::OP::FloatComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::DoubleComplex" rel="noopener noreferrer"&gt;R::OP::DoubleComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::AnyObject" rel="noopener noreferrer"&gt;R::OP::AnyObject&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::String" rel="noopener noreferrer"&gt;R::OP::String&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::StringBuffer" rel="noopener noreferrer"&gt;R::OP::StringBuffer&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Time::Piece" rel="noopener noreferrer"&gt;R::OP::Time::Piece&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="Matrix-Operations"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="Matrix"&gt;&lt;/a&gt;Matrix Operations&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Matrix" rel="noopener noreferrer"&gt;R::OP::Matrix&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Matrix::Float" rel="noopener noreferrer"&gt;R::OP::Matrix::Float&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Matrix::Double" rel="noopener noreferrer"&gt;R::OP::Matrix::Double&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Matrix::FloatComplex" rel="noopener noreferrer"&gt;R::OP::Matrix::FloatComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::Matrix::DoubleComplex" rel="noopener noreferrer"&gt;R::OP::Matrix::DoubleComplex&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="Data-Frame"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="Data"&gt;&lt;/a&gt;Data Frame&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::DataFrame" rel="noopener noreferrer"&gt;R::DataFrame&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::OP::DataFrame" rel="noopener noreferrer"&gt;R::OP::DataFrame&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="Utilities"&gt;
&lt;span&gt;&lt;/span&gt;Utilities&lt;/h2&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::R::Util" rel="noopener noreferrer"&gt;R::Util&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="Wiki"&gt;
&lt;span&gt;&lt;/span&gt;Wiki&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM-R/wiki" rel="noopener noreferrer"&gt;SPVM::R Wiki&lt;/a&gt;&lt;/p&gt;

&lt;h1 id="Repository"&gt;
&lt;span&gt;&lt;/span&gt;Repository&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM-R" rel="noopener noreferrer"&gt;SPVM::R - Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>perl</category>
      <category>spvm</category>
      <category>r</category>
    </item>
    <item>
      <title>SPVM::Resource::Eigen released</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Wed, 17 Jul 2024 23:22:40 +0000</pubDate>
      <link>https://dev.to/yukikimoto/spvmresourceeigen-released-43p0</link>
      <guid>https://dev.to/yukikimoto/spvmresourceeigen-released-43p0</guid>
      <description>&lt;p&gt;SPVM::Resource::Eigen, a &lt;a href="https://metacpan.org/pod/SPVM" rel="noopener noreferrer"&gt;SPVM&lt;/a&gt; resource for the C++ library &lt;a href="https://eigen.tuxfamily.org/index.php?title=Main_Page" rel="noopener noreferrer"&gt;Eigen&lt;/a&gt; that can calculate the matrix operations required by AI/Deep Learning, has been released.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Resource::Eigen" rel="noopener noreferrer"&gt;SPVM::Resource::Eigen - CPAN&lt;/a&gt;&lt;/p&gt;

</description>
      <category>perl</category>
      <category>spvm</category>
      <category>cpp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Perl v5.40.0 is released</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Tue, 11 Jun 2024 04:54:35 +0000</pubDate>
      <link>https://dev.to/yukikimoto/perl-v5400-is-released-3occ</link>
      <guid>https://dev.to/yukikimoto/perl-v5400-is-released-3occ</guid>
      <description>&lt;p&gt;Perl v5.40.0 is released.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Perl/perl5/releases/tag/v5.40.0" rel="noopener noreferrer"&gt;https://github.com/Perl/perl5/releases/tag/v5.40.0&lt;/a&gt;&lt;/p&gt;

</description>
      <category>perl</category>
    </item>
    <item>
      <title>SPVM Documentation</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Wed, 24 Apr 2024 02:02:30 +0000</pubDate>
      <link>https://dev.to/yukikimoto/spvm-documentation-27af</link>
      <guid>https://dev.to/yukikimoto/spvm-documentation-27af</guid>
      <description>&lt;p&gt;This is the &lt;a href="https://metacpan.org/pod/SPVM" rel="noopener noreferrer"&gt;SPVM&lt;/a&gt; Documentation.&lt;/p&gt;

&lt;h1 id="Tutorial"&gt;
&lt;span&gt;&lt;/span&gt;Tutorial&lt;/h1&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://github.com/yuki-kimoto/SPVM/wiki/Tutorial" rel="noopener noreferrer"&gt;SPVM Tutorial&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="Documents"&gt;
&lt;span&gt;&lt;/span&gt;Documents&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document" rel="noopener noreferrer"&gt;All SPVM Documents&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language" rel="noopener noreferrer"&gt;Language Specification&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::Tokenization" rel="noopener noreferrer"&gt;Lexical Tokenization&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::SyntaxParsing" rel="noopener noreferrer"&gt;Syntax Parsing&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::Class" rel="noopener noreferrer"&gt;Class Definition&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::Types" rel="noopener noreferrer"&gt;Types&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::Statements" rel="noopener noreferrer"&gt;Statements&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::Operators" rel="noopener noreferrer"&gt;Operators&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::ExceptionHandling" rel="noopener noreferrer"&gt;Exception Handling&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::GarbageCollection" rel="noopener noreferrer"&gt;Garbage Collection&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Language::System" rel="noopener noreferrer"&gt;System Setting&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;


&lt;li&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeClass" rel="noopener noreferrer"&gt;Native Classes&lt;/a&gt;&lt;/p&gt;




&lt;/li&gt;


&lt;li&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Builder::Config" rel="noopener noreferrer"&gt;Native Class Config&lt;/a&gt;&lt;/p&gt;




&lt;/li&gt;


&lt;li&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI" rel="noopener noreferrer"&gt;Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Runtime" rel="noopener noreferrer"&gt;Runtime Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::BasicType" rel="noopener noreferrer"&gt;Basic Type Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::ClassVariable" rel="noopener noreferrer"&gt;Class Variable Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Field" rel="noopener noreferrer"&gt;Field Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Method" rel="noopener noreferrer"&gt;Method Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Argument" rel="noopener noreferrer"&gt;Argument Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Type" rel="noopener noreferrer"&gt;Type Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Compiler" rel="noopener noreferrer"&gt;Compiler Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::ClassFile" rel="noopener noreferrer"&gt;Class File Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::StringBuffer" rel="noopener noreferrer"&gt;String Buffer Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Allocator" rel="noopener noreferrer"&gt;Allocatord Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Mutex" rel="noopener noreferrer"&gt;Mutex Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::NativeAPI::Internal" rel="noopener noreferrer"&gt;Internal Native APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;


&lt;li&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::Resource" rel="noopener noreferrer"&gt;Resources&lt;/a&gt;&lt;/p&gt;




&lt;/li&gt;


&lt;li&gt;

&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Document::EnvironmentVariables" rel="noopener noreferrer"&gt;Environment Variables&lt;/a&gt;&lt;/p&gt;




&lt;/li&gt;


&lt;/ul&gt;

&lt;h1 id="Exchange-APIs"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="Exchange"&gt;&lt;/a&gt;Exchange APIs&lt;/h1&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::ExchangeAPI" rel="noopener noreferrer"&gt;Exchange APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="Builder-APIs"&gt;
&lt;span&gt;&lt;/span&gt;&lt;a id="Builder"&gt;&lt;/a&gt;Builder APIs&lt;/h1&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Builder::API" rel="noopener noreferrer"&gt;Builder APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Builder::Util::API" rel="noopener noreferrer"&gt;Builder Utility APIs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/SPVM::Builder::Config::Info" rel="noopener noreferrer"&gt;Config Information&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id="Commands"&gt;
&lt;span&gt;&lt;/span&gt;Commands&lt;/h1&gt;

&lt;ul&gt;

&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/spvm" rel="noopener noreferrer"&gt;spvm - Executing SPVM Programs&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/spvmcc" rel="noopener noreferrer"&gt;spvmcc - Generating Executable Files&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://metacpan.org/pod/spvmdist" rel="noopener noreferrer"&gt;spvmdist - Distributing SPVM Modules&lt;/a&gt;&lt;/p&gt;

&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>perl</category>
      <category>spvm</category>
    </item>
    <item>
      <title>How to use OpenMP from Perl with SPVM.</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Thu, 28 Mar 2024 00:10:25 +0000</pubDate>
      <link>https://dev.to/yukikimoto/how-to-use-openmp-from-perl-with-spvm-5bjn</link>
      <guid>https://dev.to/yukikimoto/how-to-use-openmp-from-perl-with-spvm-5bjn</guid>
      <description>&lt;p&gt;How to use &lt;a href="https://en.wikipedia.org/wiki/OpenMP" rel="noopener noreferrer"&gt;OpenMP&lt;/a&gt; from Perl with &lt;a href="https://metacpan.org/pod/SPVM" rel="noopener noreferrer"&gt;SPVM&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See &lt;a href="https://github.com/yuki-kimoto/SPVM/tree/master/examples/native/openmp" rel="noopener noreferrer"&gt;an example to bind OpenMP to SPVM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SPVM provides a way to bind C language libraries and call them from Perl.&lt;/p&gt;

&lt;p&gt;When binding C libraries to Perl, you typically write XS, but SPVM offers an alternative approach.&lt;/p&gt;

&lt;p&gt;MyOpenMP.spvm&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class MyOpenMP {

  native static method sum_vec_int : int[] ($nums1 : int[], $nums2 : int[]);

  static method test : void () {
    my $nums1 = [1, 2, 3];
    my $nums2 = [5, 6, 7];

    my $nums3 = &amp;amp;sum_vec_int($nums1, $nums2);

    for (my $i = 0; $i &amp;lt; @$nums3; $i++) {
      say $nums3-&amp;gt;[$i];
    }
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MyOpenMP.c&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;"spvm_native.h"&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;FILE_NAME&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"SPVM/MyOpenMP.c"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;int32_t&lt;/span&gt; &lt;span class="nf"&gt;SPVM__MyOpenMP__sum_vec_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SPVM_ENV&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SPVM_VALUE&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;obj_nums1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;oval&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obj_nums1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"$nums1 must be defined."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;__func__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FILE_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;__LINE__&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="kt"&gt;int32_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;get_elems_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj_nums1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;obj_nums2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;oval&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obj_nums2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nb"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;die&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"$nums2 must be defined."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;__func__&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FILE_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;__LINE__&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="kt"&gt;int32_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;get_elems_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj_nums2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;int32_t&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj_nums1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;obj_nums3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;new_int_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kt"&gt;int32_t&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;nums3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;get_elems_int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;obj_nums3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;int32_t&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;#pragma omp parallel for
&lt;/span&gt;  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;nums3&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nums1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;nums2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;oval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;obj_nums3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MyOpenMP.config&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use strict;
use warnings;

use SPVM::Builder::Config;

my $config = SPVM::Builder::Config-&amp;gt;new_gnu99(file =&amp;gt; __FILE__);

# Compiler options
$config-&amp;gt;add_ccflag('-fopenmp');

# Linker option
$config-&amp;gt;add_ldflag('-fopenmp');
$config-&amp;gt;add_lib('gomp');

$config;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;openmp.pl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/lib";

use SPVM 'MyOpenMP';

SPVM::MyOpenMP-&amp;gt;test;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This program outputs values calculated by OpenMP.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;6
8
10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>perl</category>
      <category>openmp</category>
      <category>spvm</category>
    </item>
    <item>
      <title>Google started offering a Perl API for advertising from 2020.</title>
      <dc:creator>Yuki Kimoto</dc:creator>
      <pubDate>Wed, 13 Mar 2024 02:18:14 +0000</pubDate>
      <link>https://dev.to/yukikimoto/google-started-offering-a-perl-api-for-advertising-from-2020-17ec</link>
      <guid>https://dev.to/yukikimoto/google-started-offering-a-perl-api-for-advertising-from-2020-17ec</guid>
      <description>&lt;p&gt;Google recently started offering a Perl API for advertising from 2020.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/google-ads/api/docs/client-libs/perl" rel="noopener noreferrer"&gt;Perl Client Libraries - Google Ads API&lt;/a&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>perl</category>
    </item>
  </channel>
</rss>
