unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#57491] [PATCH] patch series: Update Raku ecosystem
@ 2022-08-30 16:31 Daniel Sockwell via Guix-patches via
  2022-08-30 16:45 ` Daniel Sockwell via Guix-patches via
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Daniel Sockwell via Guix-patches via @ 2022-08-30 16:31 UTC (permalink / raw)
  To: 57491

Hi all,

I am working on updating Guix's version of the compiler/related tools
for the Raku programming language.  The current versions are from March
of 2019, which makes them pretty out-of-date given Raku's monthly
release cadence.

This first patch is for MoarVM (the virtual machine that Raku runs on)
which is a dependency for later packages.  I note that, unfortunately,
the output of this package is currently non-deterministic; however, the
same is true of the 2019 version so that non-determinism isn't a
regression.

This is my first Guix package so I'd welcome any feedback you might
have.  I will follow up shortly with three additional patches that
Guix needs in order to provide an up-to-date Raku compiler.

Thanks in advance!

Best,
Daniel


From 18919edeb7ba1f3e3a18e710a715eec899f1910c Mon Sep 17 00:00:00 2001
Message-Id: <18919edeb7ba1f3e3a18e710a715eec899f1910c.1661876717.git.daniel@codesections.com>
From: Daniel Sockwell <daniel@codesections.com>
Date: Tue, 30 Aug 2022 12:23:21 -0400
Subject: [PATCH] Update moarvm 2019.03->2022.07

---
 gnu/packages/perl6.scm | 88 +++++++++++++++++++++---------------------
 1 file changed, 45 insertions(+), 43 deletions(-)

diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm
index dab9dd477b..9b3d98987a 100644
--- a/gnu/packages/perl6.scm
+++ b/gnu/packages/perl6.scm
@@ -22,11 +22,13 @@ (define-module (gnu packages perl6)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system rakudo)
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages tls))
@@ -34,29 +36,27 @@ (define-module (gnu packages perl6)
 (define-public moarvm
   (package
     (name "moarvm")
-    (version "2019.03")
+    (version "2022.07")
     (source
-      (origin
-        (method url-fetch)
-        (uri (string-append "https://moarvm.org/releases/MoarVM-"
-                            version ".tar.gz"))
-        (sha256
-         (base32
-          "017w1zvr6yl0cgjfc1b3ddlc6vjw9q8p7alw1vvsckw95190xc14"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;(delete-file-recursively "3rdparty/dynasm") ; JIT
-            (delete-file-recursively "3rdparty/dyncall")
-            (delete-file-recursively "3rdparty/freebsd")
-            (delete-file-recursively "3rdparty/libatomicops")
-            (delete-file-recursively "3rdparty/libuv")
-            (delete-file-recursively "3rdparty/libtommath")
-            (delete-file-recursively "3rdparty/msinttypes")
-            #t))))
-    (build-system perl-build-system)
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://moarvm.org/releases/MoarVM-" version ".tar.gz"))
+       (sha256 (base32 "0ijvdd7jyq990zyxrlv8pqhf53q20qhbjly6cnagj9pq2r6z0zik"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin (for-each
+                 delete-file-recursively
+                 '(;"3rdparty/dyncall" ; upstream prefers dyncall to libffi
+                   ;"3rdparty/dynasm"  ; needed for JIT
+                   ;"3rdparty/freebsd" ; freebsd/memmem.o is used on linux
+                   "3rdparty/libatomicops"
+                   "3rdparty/libtommath"
+                   "3rdparty/libuv"
+                   "3rdparty/msinttypes"))))))
+    (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(#:test-target "test"
+       #:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -65,34 +65,36 @@ (define-public moarvm
                (setenv "CFLAGS" "-fcommon")
                (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
                (invoke "perl" "Configure.pl"
-                       "--prefix" out
-                       "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
-                       "--has-libtommath"
+                       "--mimalloc"
                        "--has-libatomic_ops"
-                       "--has-libffi"
-                       "--has-libuv")))))))
+                       "--has-libtommath"
+                       "--has-libuv"
+                       ;"--has-dyncall" ; TODO: package dyncall for guix
+                       "--toolchain" "gnu"
+                       "--os" "linux"
+                       "--pkgconfig" (string-append pkg-config "/bin/pkg-config")
+                       "--prefix" out)))))))
     (home-page "https://moarvm.org/")
     ;; These should be inputs but moar.h can't find them when building rakudo
-    (propagated-inputs
-     (list libatomic-ops libffi libtommath-1.0 libuv))
-    (native-inputs
-     (list pkg-config))
-    (synopsis "VM for NQP And Rakudo Perl 6")
+    (propagated-inputs (list libatomic-ops libtommath libuv))
+    (native-inputs (list pkg-config perl))
+    (synopsis "Virtual machine for the Raku programming language")
     (description
-     "Short for \"Metamodel On A Runtime\", MoarVM is a modern virtual machine
-built for the Rakudo Perl 6 compiler and the NQP Compiler Toolchain.  Highlights
-include:
+     "MoarVM (\"Metamodel On A Runtime\") is a modern virtual machine built for
+the Raku programming language, NQP, and the Rakudo Raku compiler.  MoarVM's
+features include:
 
 @itemize
-@item Great Unicode support, with strings represented at grapheme level
-@item Dynamic analysis of running code to identify hot functions and loops, and
-perform a range of optimizations, including type specialization and inlining
-@item Support for threads, a range of concurrency control constructs, and
-asynchronous sockets, timers, processes, and more
-@item Generational, parallel, garbage collection
-@item Support for numerous language features, including first class functions,
-exceptions, continuations, runtime loading of code, big integers and interfacing
-with native libraries.
+@item Just-in-time compilation of running code, allowing MoarVM to identify
+and optimize hot functions/loops.  Optimizations include type specialization,
+code inlining/elimination, and on-stack replacement.
+@item Unusually strong Unicode support enabled by strings represented at
+grapheme level and an embedded copy of the Unicode Character Database
+@item Support for numerous Raku language features, such as delimited
+continuations, first-class functions, resumable exceptions, runtime code
+loading, bounded serialization, and native calling/pointer manipulation.
+@item The low-level concurrency primitives required to implement Raku's
+high level concurrency system.
 @end itemize")
     (license license:artistic2.0)))
 
-- 
2.37.2




^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-09-08  9:18 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-30 16:31 [bug#57491] [PATCH] patch series: Update Raku ecosystem Daniel Sockwell via Guix-patches via
2022-08-30 16:45 ` Daniel Sockwell via Guix-patches via
2022-08-30 16:49 ` Daniel Sockwell via Guix-patches via
2022-08-30 16:59 ` Daniel Sockwell via Guix-patches via
2022-09-07 16:26 ` Daniel Sockwell via Guix-patches via
2022-09-07 21:56 ` Maxime Devos
2022-09-08  2:18   ` Daniel Sockwell via Guix-patches via
2022-09-08  9:15     ` Maxime Devos

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).