civodul pushed a commit to branch master in repository maintenance. commit 832e95ad0012cd09e5713268fe1dca98bda95fe2 Author: Ludovic Courtès <l...@gnu.org> Date: Fri Sep 1 14:02:21 2017 +0200
gpce-2017: Adjust as suggested by the reviewers. --- doc/gpce-2017/gpce.skb | 22 +++++++++++++++------- doc/gpce-2017/staging.sbib | 29 +++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/doc/gpce-2017/gpce.skb b/doc/gpce-2017/gpce.skb index b58eafc..8a98b27 100644 --- a/doc/gpce-2017/gpce.skb +++ b/doc/gpce-2017/gpce.skb @@ -79,7 +79,7 @@ "\\usepackage{microtype}\n" ;; "\\usepackage[hypcap]{caption}\n" ;; "\\DeclareCaptionType{copyrightbox}\n" - ;; "\\usepackage{balance}\n" + "\\usepackage{balance}\n" ;; Recognize ‘⇒’ and ‘⇝’ in LaTeX input. "\\DeclareUnicodeCharacter{21D2}{$\\Rightarrow$}\n" @@ -245,8 +245,8 @@ rollback “for free.” While Guix and Nix are package managers, the Guix System Distribution (or GuixSD) as well as NixOS extend the functional paradigm to whole operating system deployments ,(ref :bib 'dolstra2010:nixos).]) - (p [While Guix implements this functional deployment paradigm -pioneered by Nix, we explained in previous work that its + (p [Guix implements this functional deployment paradigm +pioneered by Nix but, as explained in previous work, its implementation departs from Nix in interesting ways ,(ref :bib 'courtes2013:functional). First, while Nix relies on a custom domain-specific language (DSL), the Nix language, Guix instead @@ -325,7 +325,7 @@ concludes.])) :ident "origins" (p [Scheme is a dialect of Lisp, and Lisp is famous for its -homoiconicity—the fact that code has a direct representation as a data +its direct representation of code as a data structure using the same syntax. “S-expressions” or “sexps”, Lisp’s parenthecal expressions, thus look like they lend themselves to code staging. @@ -420,7 +420,9 @@ cases.]) :start ";!begin-imagemagick-gexp" :stop ";!end-imagemagick-gexp"))) - (p [G-expressions ,(emph [bind software deployment to staging]). + (p [G-expressions ,(emph [bind software deployment to +staging]): when a gexp is staged, the software and artifacts it refers +to are guaranteed to be deployed as well. A gexp bundles an sexp and its inputs and outputs, and it can be serialized with ,(tt [/gnu/store]) file names substituted as needed. We first define two operators: @@ -689,7 +691,7 @@ Guix.]) the history of Guix. Package definitions like that of Figure ,(ref :figure "fig-package-def") rely on the previous ad-hoc staging mechanism, as can be seen in the use of labels in the ,(tt -[inputs]) field of definitions. Guix today includes more than 5,500 +[inputs]) field of definitions. Guix today includes more than 6,000 packages, which still use this old, pre-gexp style. We are considering a migration to a new style but given the size of the repository, this is a challenging task and we must make sure every use @@ -711,7 +713,7 @@ flexibility.])) (p [GuixSD, the Guix-based GNU/Linux distribution, was one of the main motivations behind gexps. The principle behind GuixSD is that, given a high-level ,(tt [operating-system]) declaration that -specifies user accounts, system services, and other OS settings, the +specifies user accounts, system services, and other settings, the complete system is instantiated to the store. To achieve that, a lot of files must be generated: start/stop script for all the system services (daemons, operations such as file system mounts, etc.), @@ -890,6 +892,11 @@ escaping syntax. The “code-as-string” paradigm also has other side effects: comments and whitespace in those strings is preserved, and changing those triggers a rebuild of the derivation, which is inconvenient.]) + (p [There are similarities between GuixSD and MirageOS, which both +aim to unify configuration and deployment into a single high-level +language framework ,(ref :bib 'madhavapeddy2013:unikernels). Mirage +uses code staging through MetaOCaml, though that is limited to the +implementation of its data storage layer.]) (p [Code staging is often studied in the context of optimized code generation ,(ref :bib '(rompf2012:lms wang2002:s2 aktemur2013:shonan)), or that of hygienic macros ,(ref :bib '(kohlbecker1986:hygienic @@ -955,6 +962,7 @@ the assembly of operating system components in GuixSD. Using a single-language framework with staging has proved to enable new ways of code reuse and composition.])) + (!latex "\n\\newpage\n\\balance\n") (references)) ;;; Local Variables: diff --git a/doc/gpce-2017/staging.sbib b/doc/gpce-2017/staging.sbib index 33b277d..12c8e1b 100644 --- a/doc/gpce-2017/staging.sbib +++ b/doc/gpce-2017/staging.sbib @@ -147,6 +147,35 @@ Evaluation and Semantics-Based Program Manipulation (PEPM 1999)") (keywords "code generation, domain-specific languages, generative programming, high-performance computing, staging")) +(article madhavapeddy2013:unikernels + (author "Anil Madhavapeddy and David J. Scott") + (title "Unikernels: Rise of the Virtual Library Operating System") + (journal "Queue") + (issue_date "November 2013") + (volume "11") + (number "11") + (month "December") + (year "2013") + (issn "1542-7730") + (pages "30:30--30:44") + (articleno "30") + (numpages "15") + (url "http://doi.acm.org/10.1145/2557963.2566628") + (doi "10.1145/2557963.2566628") + (acmid "2566628") + (publisher "ACM") + (address "New York, NY, USA")) + +#| +@MISC{Gazagnaire10statically-typedvalue, + (author "Thomas Gazagnaire and Anil Madhavapeddy") + (title " Statically-typed value persistence for ML") + (booktitle "1st Workshop on Generative Technologies") + (month "March") + year = {2010} +} +|# + #| (defun skr-from-bibtex () "Vaguely convert the BibTeX snippets after POINT to SBibTeX."