civodul pushed a commit to branch master in repository maintenance. commit 0ef6b13eed6872662105d011e9d7d3d42e9e4a8d Author: Ludovic Courtès <l...@gnu.org> Date: Fri Sep 1 15:27:49 2017 +0200
gpce-2017: Shrink to 7 pages (10pt font). acmart v1.46 (required for the camera-ready version) uses a 10pt font, whereas acmart v1.09 (part of TeX Live 2016, which I used for the submission) uses 9pt. --- doc/gpce-2017/gpce.skb | 52 +++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/doc/gpce-2017/gpce.skb b/doc/gpce-2017/gpce.skb index f311865..c334c0e 100644 --- a/doc/gpce-2017/gpce.skb +++ b/doc/gpce-2017/gpce.skb @@ -30,12 +30,6 @@ (! "{-}{-}") "--")))) -(define (corresponding) - (resolve (lambda (n e env) - (if (engine-format? "latex" e) - (! "co\\-rres\\-pon\\-ding") - "corresponding")))) - (define (url url) (ref :text (tt url) :url url)) @@ -155,9 +149,9 @@ (let ((ident (markup-ident n)) (legend (markup-option n :legend)) (mc (markup-option n :multicolumns))) - (display "\\begin{figure}[ht]\n\\begin{footnotesize}\n") + (display "\\begin{figure}[ht]\n\\begin{scriptsize}\n") (output (markup-body n) e) - (display "\n\\end{footnotesize}\n") + (display "\n\\end{scriptsize}\n") (format #t "\\caption{\\label{~a}" (string-canonicalize ident)) (output legend e) @@ -219,7 +213,7 @@ sharing.])) ;; See <http://dl.acm.org/ccs/ccs_flat.cfm>. (!latex "\\input{categories.tex}\n") - (acm-keywords [Code staging, Scheme, Functional package management]) + (acm-keywords [Code staging, Scheme, Software deployment]) (!latex "\\maketitle\n") @@ -246,8 +240,8 @@ different hash. Thus, each store file name uniquely identifies build results, and build processes are ,(emph [referentially transparent]). This simplifies reasoning on complex package compositions, and also has nice properties such as supporting transactional upgrades and -rollback “for free.” While Guix and Nix are package managers, the -Guix System Distribution (or GuixSD) as well as NixOS extend the +rollback “for free.” The +Guix System Distribution (or GuixSD) and NixOS extend the functional paradigm to whole operating system deployments ,(ref :bib 'dolstra2010:nixos).]) (p [Guix implements this functional deployment paradigm @@ -257,8 +251,8 @@ implementation departs from Nix in interesting ways ,(ref :bib domain-specific language (DSL), the Nix language, Guix instead implements a set of DSLs and data structures embedded in the general-purpose language Scheme. This simplifies -the development of user interfaces and tools dealing with -packages, and allows users to benefit from everything a +the development of user interfaces and tools, +and allows users to benefit from everything a general-purpose language brings: compiler, debugger, REPL, editor support, libraries, and so on.]) @@ -286,8 +280,8 @@ interface.] (assoc-ref %build-inputs "gawk"))))) (inputs `(("gawk" ,gawk))) ;!inputs (synopsis "GNU Hello") - (description "An illustration of GNU's engineering practices.") - (home-page "http://www.gnu.org/software/hello/") + (description "Example of a GNU package.") + (home-page "https://gnu.org/software/hello/") (license gpl3+))) ]))) @@ -364,9 +358,9 @@ add the file ,(tt [GuixSD.png]) to ,(tt [/gnu/store]). The variable ,(tt [build]) contains our build program as an sexp (the apostrophe is equivalent to ,(tt [quote]); it introduces unevaluated code). Finally, ,(tt -[build,(!latex "\\")-expression->derivation]) takes the build program and computes +[build-expression->derivation]) takes the build program and computes the corresponding derivation without building it. The user can then -make an RPC to the build daemon asking it to build this derivation; +make an RPC to the daemon asking it to build this derivation; only then will the daemon create an isolated environment and run our build program.]) (p [,(tt [build-expression->derivation]) arranges so that the @@ -615,13 +609,13 @@ seen earlier. We defined a ,(tt [file-append]) function that returns objects with a custom expander: one that performs string concatenation when generating the sexp. We can now write gexps like:] - (!latex "\\\\[0.3cm]\n") + (!latex "\\\\[0.3cm]\n\\begin{scriptsize}\n") (prog :line #f (source :language guix [ #~(execl #$(file-append emacs "/bin/emacs")) ⇝ (execl "/gnu/store/…-emacs-25.2/bin/emacs")])) - (!latex "\\\\[0.3cm]\n") + (!latex "\\end{scriptsize}\n\\\\[0.3cm]\n") [This is convenient in situations where we do not want or cannot impose a ,(tt [string-append]) call in staged code.])) @@ -753,7 +747,7 @@ module, and the ,(tt [kodir]) store item which contains kernel modules directly or indirectly, are “pulled” in the initrd comes for free.]) (p [Once the root file system is mounted, the initrd passes control to the Shepherd, our daemon-managing daemon,(footnote (ref :url (url -"https://gnu.org/s/shepherd/"))). The Shepherd is responsible for +"https://gnu.org/software/shepherd/"))). The Shepherd is responsible for starting system services—from the email or SSH daemon to the X graphical display server—and for doing other initialization operations such as mounting additional file systems. The Shepherd is written in @@ -774,7 +768,7 @@ functionality, and (2) use our start-process-in-container function lieu of the Shepherd’s own start-process function. This is a good example of cross-stage code sharing, where the second stage in this case is the operating system’s run-time environment.]) - (p [Another system service implemented in Scheme is GNU mcron, + #;(p [Another system service implemented in Scheme is GNU mcron, which handles scheduled job execution. Its configuration also consists of Scheme snippets, which GuixSD OS definitions can include as gexps.])) @@ -881,10 +875,9 @@ able to include references to store items (derivation results) in generated code while keeping track of derivations this generated code depends on. However, Nix is a single-stage language: the “build side” is left to other languages such as -Bash or Perl. Users can splice arbitrary Nix expressions in -strings thanks to ,(emph [string interpolation]) -,(ref :bib 'dolstra2010:nixos); when such an expression refers to a -derivation, the interpreter records this dependency in the string +Bash or Perl. Users can splice Nix expressions in +strings using ,(emph [string interpolation]) +,(ref :bib 'dolstra2010:nixos); the interpreter records this dependency in the string context and substitutes the reference with the output file name of the derivation.]) (p [Nix views staged code as mere strings and thus @@ -892,14 +885,13 @@ does not provide any guarantee on the generated code. The string interpolation syntax (,(tt [${])…,(tt [}]) sequences) often clashes with the target’s language syntax (e.g., Bash uses dollar-brace syntax to reference variables), which can lead -to subtle errors and constrain developers to resort to non-trivial -escaping syntax. The “code-as-string” paradigm also has other side -effects: comments and whitespace in those strings is preserved, and +to subtle errors. In addition, comments and whitespace in those +strings are preserved, and changing those triggers a rebuild of the derivation, which is inconvenient.]) - (p [There are similarities between GuixSD and MirageOS, which both + (p [GuixSD and MirageOS both aim to unify configuration and deployment into a single high-level -language framework ,(ref :bib 'madhavapeddy2013:unikernels). Mirage +language framework ,(ref :bib 'madhavapeddy2013:unikernels). MirageOS 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