[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
13/14: gpce-2017: Shrink to 7 pages (10pt font).
From: |
Ludovic Courtès |
Subject: |
13/14: gpce-2017: Shrink to 7 pages (10pt font). |
Date: |
Fri, 1 Sep 2017 11:57:56 -0400 (EDT) |
civodul pushed a commit to branch master
in repository maintenance.
commit 0ef6b13eed6872662105d011e9d7d3d42e9e4a8d
Author: Ludovic Courtès <address@hidden>
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
- 11/14: gpce-2017: Enable hyphenation at hyphens., (continued)
- 11/14: gpce-2017: Enable hyphenation at hyphens., Ludovic Courtès, 2017/09/01
- 10/14: gpce-2017: Adjust as suggested by the reviewers., Ludovic Courtès, 2017/09/01
- 14/14: gpce-2017: Adjust ACM boilerplate., Ludovic Courtès, 2017/09/01
- 05/14: gpce-2017: Shrink., Ludovic Courtès, 2017/09/01
- 01/14: doc: Add GPCE paper., Ludovic Courtès, 2017/09/01
- 08/14: gpce-2017: Add an explicit license., Ludovic Courtès, 2017/09/01
- 09/14: gpce-2017: Fix typo., Ludovic Courtès, 2017/09/01
- 03/14: gpce-2017: Write some more., Ludovic Courtès, 2017/09/01
- 04/14: gpce-2017: Fixlets., Ludovic Courtès, 2017/09/01
- 07/14: gpce-2017: Deanonymize., Ludovic Courtès, 2017/09/01
- 13/14: gpce-2017: Shrink to 7 pages (10pt font).,
Ludovic Courtès <=
- 06/14: gpce-2017: Tweak some more., Ludovic Courtès, 2017/09/01
- 02/14: gpce-2017: Write, write, write., Ludovic Courtès, 2017/09/01
- 12/14: gpce-2017: Use acmart v1.47., Ludovic Courtès, 2017/09/01