Message ID | 20210301112458.18474-1-pukkamustard@posteo.net |
---|---|
State | Accepted |
Headers | show |
Series | [bug#46846] gnu: Add guile-cbor. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Hi,
pukkamustard <pukkamustard@posteo.net> skribis:
> * gnu/packages/guile-xyz.scm (guile-cbor): New variable.
Applied, thanks!
I had a quick look at the code. It’s convenient to have a
Guile-JSON-like interface. OTOH, CBOR lends itself well to more
efficient implementations, à la Bytestructures; I wonder if there could
additionally be a syntactic layer that would generate specialized
serializers/deserializers. Thoughts?
Ludo’.
> I had a quick look at the code. It’s convenient to have a > Guile-JSON-like interface. OTOH, CBOR lends itself well to more > efficient implementations, à la Bytestructures; I wonder if > there could > additionally be a syntactic layer that would generate > specialized > serializers/deserializers. Thoughts? Interesting, I didn't know about bytestructures. A bytestructures like-implementation of CBOR would be cool. One thing I'm not quite sure about is that CBOR is variable length. For example an integer is represented in either 1, 2, 3, 5 or 9 bytes depending on how large the integer is. From initial glance, I think bytestructures is efficient because structures are fixed-size and the implementation can do address arithmetic for accessing specific fields. But there also seem to be "dynamic" bytestructures descriptors. So I'm probably lacking imagination. I'll check out bytestructures... -pukkamustard
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index c75fc4b4ac..45b3a82d00 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -32,7 +32,7 @@ ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com> ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> -;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net> +;;; Copyright © 2020, 2021 pukkamustard <pukkamustard@posteo.net> ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com> ;;; ;;; This file is part of GNU Guix. @@ -4560,3 +4560,32 @@ ffi-helper from nyacc.") for C++ code using a simple embedded DSL. Think of it as @code{Boost.Python} or @code{LuaBind} but for Scheme.") (license license:boost1.0)))) + +(define-public guile-cbor + (package + (name "guile-cbor") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://inqlab.net/git/guile-cbor.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 (base32 "0bdqg3ifayf7m2j09lqrgdfprbdaa67azf09bcq9b4k71inxfnxl")))) + (build-system gnu-build-system) + (arguments `()) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (inputs `(("guile" ,guile-3.0))) + (synopsis "Guile implementation of CBOR") + (description + "The Concise Binary Object Representation (CBOR), as specified by RFC 8949, is +a binary data serialization format. CBOR is similar to JSON but serializes to +binary which is smaller and faster to generate and parse. This package provides +a Guile implementation of CBOR.") + (home-page "https://inqlab.net/git/guile-cbor.git") + (license license:gpl3+)))