From: Adam Massmann <massmannak@gmail.com>
To: 31940@debbugs.gnu.org
Subject: [bug#31940] [PATCH] gnu: Add Stalin.
Date: Fri, 22 Jun 2018 14:35:18 -0400 [thread overview]
Message-ID: <878t76655l.fsf@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 96 bytes --]
Hi Guix,
Below is a patch to add the Stalin compiler to Guix. Feedback welcome.
Thanks,
Adam
[-- Attachment #2: 0001-gnu-Add-stalin.patch --]
[-- Type: text/x-patch, Size: 4966 bytes --]
From dbd3395c90aa443a7c6bad9155e6bfc7053bfbf0 Mon Sep 17 00:00:00 2001
From: Adam Massmann <massmannak@gmail.com>
Date: Fri, 22 Jun 2018 14:29:23 -0400
Subject: [PATCH] gnu: Add stalin.
* gnu/packages/scheme.scm (stalin): New variable.
---
gnu/packages/scheme.scm | 78 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 77 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index dba5067e9..dbb545532 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -356,7 +357,7 @@ mashups, office (web agendas, mail clients, ...), etc.")
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1))
-
+
;; No `configure' script; run "make check" after "make install" as
;; prescribed by README.
#:phases
@@ -1025,3 +1026,78 @@ the same program, without any interference between them. Foreign functions in C
can be added and values can be defined in the Scheme environment. Being quite a
small program, it is easy to comprehend, get to grips with, and use.")
(license bsd-3))) ; there are no licence headers
+
+(define-public stalin
+ (let ((commit "ed1c9e339c352b7a6fee40bb2a47607c3466f0be"))
+ (package
+ (name "stalin")
+ (version "0.11")
+ (source (origin
+ ;; Use Pearlmutter's upstream branch with AMD64 patches
+ ;; applied. Saves us from including those 20M! patches
+ ;; in Guix. For more info, see:
+ ;; <ftp.ecn.purdue.edu/qobi/stalin-0.11-amd64-patches.tgz>
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/barak/stalin.git")
+ (commit commit)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "15a5gxj9v7jqlgkg0543gdflw0rbrir7fj5zgifnb33m074wiyhn"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; remove gc libs from build, we have them as input
+ '(begin
+ (delete-file "gc6.8.tar.gz")
+ (delete-file-recursively "benchmarks")
+ (substitute* "build"
+ ((".*gc6.8.*") "")
+ ((" cd \\.\\.") "")
+ ((".*B include/libgc.a") "")
+ ((".*make.*") ""))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags (list "ARCH_OPTS=-freg-struct-return")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (include-out (string-append out "/include")))
+ (invoke "./build")
+ (for-each (lambda (fname)
+ (install-file fname include-out))
+ (find-files "include"))
+ (substitute* "makefile"
+ (("\\./include") include-out))
+ (substitute* "post-make"
+ (("`pwd`") out))
+ #t)))
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "stalin.1"
+ (string-append out "/share/man/man1"))
+ (install-file "stalin"
+ (string-append out "/bin"))
+ #t))))))
+ (inputs
+ `(("libx11" ,libx11)))
+ (propagated-inputs
+ `(("libgc" ,libgc)))
+ (supported-systems '("x86_64-linux"))
+ (home-page "https://engineering.purdue.edu/~qobi/papers/fdlcc.pdf")
+ (synopsis "Brutally efficient Scheme compiler")
+ (description
+ "Stalin is an aggressively optimizing whole-program compiler
+for Scheme that does polyvariant interprocedural flow analysis,
+flow-directed interprocedural escape analysis, flow-directed
+lightweight CPS conversion, flow-directed lightweight closure
+conversion, flow-directed interprocedural lifetime analysis, automatic
+in-lining, unboxing, and flow-directed program-specific and
+program-point-specific low-level representation selection and code
+generation.")
+ (license gpl2+))))
--
2.17.1
next reply other threads:[~2018-06-22 18:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-22 18:35 Adam Massmann [this message]
2018-06-25 20:36 ` bug#31940: [PATCH] gnu: Add Stalin Ludovic Courtès
2018-06-26 1:07 ` [bug#31940] " Adam Massmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878t76655l.fsf@gmail.com \
--to=massmannak@gmail.com \
--cc=31940@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.