GNU bug report logs - #63330
[PATCH 0/4] Functional programming? In my C++?! It's more likely than you think!

Previous Next

Package: guix-patches;

Reported by: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

Date: Sat, 6 May 2023 16:09:01 UTC

Severity: normal

Tags: patch

Done: Liliana Marie Prikler <liliana.prikler <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 63330 in the body.
You can then email your comments to 63330 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:09:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Liliana Marie Prikler <liliana.prikler <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 06 May 2023 16:09:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: guix-patches <at> gnu.org
Subject: [PATCH 0/4] Functional programming?  In my C++?!  It's more likely
 than you think!
Date: Sat, 6 May 2023 18:04:40 +0200
Hi Guix,

the following series adds a couple of packages that implement immutable
data structures, functional composition and all that good stuff.

Cheers

Liliana Marie Prikler (4):
  gnu: Add c-rrb.
  gnu: Add immer.
  gnu: Add zug.
  gnu: Add lager.

 gnu/packages/c.scm   | 25 ++++++++++++
 gnu/packages/cpp.scm | 90 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 115 insertions(+)


base-commit: 7368020bef3bf5a44100c59a973412f9e254e7c6
-- 
2.39.2





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:10:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:10:02 GMT) Full text and rfc822 format available.

Message #11 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 63330 <at> debbugs.gnu.org
Subject: [PATCH 1/4] gnu: Add c-rrb.
Date: Sat, 6 May 2023 15:51:10 +0200
* gnu/packages/c.scm (c-rrb): New variable.
---
 gnu/packages/c.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index b12aaf184a..b3d1b9a0d3 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -47,6 +47,7 @@ (define-module (gnu packages c)
   #:use-module (guix store)
   #:use-module (gnu packages)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bootstrap)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages check)
@@ -107,6 +108,30 @@ (define-public c-intro-and-ref
 reference manual.")
       (license license:fdl1.3+))))
 
+(define-public c-rrb
+  (let ((commit "d908617ff84515af90c454ff4d0f98675ae6b456")
+        (revision "0"))
+    (package
+     (name "c-rrb")
+     (version (git-version "0.1.0" revision commit))
+     (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/hypirion/c-rrb")
+                    (commit commit)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0zmha3xi80vgdcwzb4vwdllf97dvggjpjfgahrpsb5f5qi3yshxa"))))
+     (build-system gnu-build-system)
+     (inputs (list libgc))
+     (native-inputs (list autoconf automake libtool))
+     (home-page "https://github.com/hypirion/c-rrb")
+     (synopsis "Relaxed Radix Balanced Trees")
+     (description "Relaxed Radix Balanced Trees are an immutable vector-like
+data structure with good performance characteristics for concatenation and
+slicing.")
+     (license license:boost1.0))))
+
 (define-public cproc
   (let ((commit "70fe9ef1810cc6c05bde9eb0970363c35fa7e802")
         (revision "1"))
-- 
2.39.2





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:10:03 GMT) Full text and rfc822 format available.

Message #14 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 63330 <at> debbugs.gnu.org
Subject: [PATCH 2/4] gnu: Add immer.
Date: Sat, 6 May 2023 15:41:55 +0200
* gnu/packages/cpp.scm (immer): New variable.
---
 gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 023d1c0337..da3567b5ef 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -67,6 +67,7 @@ (define-module (gnu packages cpp)
   #:use-module (gnu packages)
   #:use-module (gnu packages assembly)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages build-tools)
   #:use-module (gnu packages c)
@@ -1390,6 +1391,38 @@ (define-public libexpected
     (home-page "https://tl.tartanllama.xyz/")
     (license license:cc0)))
 
+(define-public immer
+  (package
+   (name "immer")
+   (version "0.8.0")
+   (source (origin
+            (method git-fetch)
+            (uri (git-reference
+                  (url "https://github.com/arximboldi/immer")
+                  (commit (string-append "v" version))))
+            (file-name (git-file-name name version))
+            (sha256
+             (base32 "11km3l5h3rgsbj8yfyzk3fnx9na55l6zs2sxpx922yvlvs2blh27"))
+            (modules '((guix build utils)))
+            (snippet #~(begin
+                         (delete-file "tools/include/doctest.h")
+                         (delete-file "tools/include/catch.hpp")
+                         (substitute* (find-files "test" "\\.[cih]pp")
+                           (("<catch.hpp>") "<catch2/catch.hpp>")
+                           (("<doctest.h>") "<doctest/doctest.h>"))
+                         (substitute* (find-files "test/oss-fuzz" "\\.cpp")
+                           ;; someone used the wrong header :)
+                           (("<fmt/printf.h>") "<fmt/ostream.h>"))))))
+   (build-system cmake-build-system)
+   (arguments (list #:test-target "check"))
+   (inputs (list boost libgc c-rrb))
+   (native-inputs (list catch2 doctest fmt pkg-config))
+   (home-page "https://sinusoid.es/immer")
+   (synopsis "Immutable data structures")
+   (description "Immer is a library of persistent and immutable data structures
+written in C++.")
+   (license license:boost1.0)))
+
 (define-public atomic-queue
   (package
     (name "atomic-queue")
-- 
2.39.2





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:10:03 GMT) Full text and rfc822 format available.

Message #17 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 63330 <at> debbugs.gnu.org
Subject: [PATCH 3/4] gnu: Add zug.
Date: Sat, 6 May 2023 15:43:04 +0200
* gnu/packages/cpp.scm (zug): New variable.
---
 gnu/packages/cpp.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index da3567b5ef..0ab7d0785b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -1423,6 +1423,31 @@ (define-public immer
 written in C++.")
    (license license:boost1.0)))
 
+(define-public zug
+  (let ((commit "d7e814b45fceceee3cb1442997d8b46cee4764ec")
+        (revision "0"))
+    (package
+     (name "zug")
+     (version (git-version "0.0.0" revision commit))
+     (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/arximboldi/zug")
+                    (commit commit)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1ww4prh763n81kzzijak8z495varlvqml4ip7i09klqnw6ya72fc"))
+              (modules '((guix build utils)))
+              (snippet #~(delete-file-recursively "tools"))))
+     (build-system cmake-build-system)
+     (arguments (list #:test-target "check"))
+     (native-inputs (list boost catch2))
+     (home-page "https://sinusoid.es/zug")
+     (synopsis "Higher-order sequence transformers")
+     (description "Zug is a C++ library providing transducers, that is composable
+sequential transformations.")
+     (license license:boost1.0))))
+
 (define-public atomic-queue
   (package
     (name "atomic-queue")
-- 
2.39.2





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sat, 06 May 2023 16:10:04 GMT) Full text and rfc822 format available.

Message #20 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: 63330 <at> debbugs.gnu.org
Subject: [PATCH 4/4] gnu: Add lager.
Date: Sat, 6 May 2023 15:43:27 +0200
* gnu/packages/cpp.scm (lager): New variable.
---
 gnu/packages/cpp.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 0ab7d0785b..fe6a0edd31 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -101,6 +101,7 @@ (define-module (gnu packages cpp)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
+  #:autoload   (gnu packages serialization) (cereal)
   #:use-module (ice-9 match))
 
 (define-public argagg
@@ -1448,6 +1449,37 @@ (define-public zug
 sequential transformations.")
      (license license:boost1.0))))
 
+(define-public lager
+  (let ((commit "2016df38be90ee176bcb73ea414be2318bc1ef31")
+        (revision "0"))
+    (package
+     (name "lager")
+     (version (git-version "0.0.0" revision commit))
+     (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/arximboldi/lager")
+                    (commit commit)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "1b7zxwqrbm7db7wxqbsrk7jjd3znvvi1cwj7jg6zkmf0199071a5"))))
+     (build-system cmake-build-system)
+     (arguments (list #:test-target "check"
+                      #:configure-flags #~(list "-Dlager_BUILD_EXAMPLES=no")
+                      #:phases
+                      #~(modify-phases %standard-phases
+                          (add-after 'unpack 'delete-failing-tests
+                            (lambda _
+                              (delete-file-recursively "test/event_loop"))))))
+     (inputs (list boost immer zug))
+     (native-inputs (list cereal))
+     (home-page "https://sinusoid.es/lager")
+     (synopsis "Library for value-oriented design")
+     (description "Lager is a library for value-oriented design implementing
+the unidirectional data-flow architecture.  Apart from a store and various
+event loops it also provides lenses and cursors.")
+     (license license:expat))))
+
 (define-public atomic-queue
   (package
     (name "atomic-queue")
-- 
2.39.2





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 15:27:01 GMT) Full text and rfc822 format available.

Message #23 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 11:25:56 -0400
Hello,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> * gnu/packages/cpp.scm (zug): New variable.
> ---
>  gnu/packages/cpp.scm | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
>
> diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> index da3567b5ef..0ab7d0785b 100644
> --- a/gnu/packages/cpp.scm
> +++ b/gnu/packages/cpp.scm
> @@ -1423,6 +1423,31 @@ (define-public immer
>  written in C++.")
>     (license license:boost1.0)))
>  
> +(define-public zug
> +  (let ((commit "d7e814b45fceceee3cb1442997d8b46cee4764ec")
> +        (revision "0"))
> +    (package
> +     (name "zug")
> +     (version (git-version "0.0.0" revision commit))
> +     (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/arximboldi/zug")
> +                    (commit commit)))
> +              (file-name (git-file-name name version))
> +              (sha256
> +               (base32 "1ww4prh763n81kzzijak8z495varlvqml4ip7i09klqnw6ya72fc"))
> +              (modules '((guix build utils)))
> +              (snippet #~(delete-file-recursively "tools"))))
> +     (build-system cmake-build-system)
> +     (arguments (list #:test-target "check"))
> +     (native-inputs (list boost catch2))
> +     (home-page "https://sinusoid.es/zug")
> +     (synopsis "Higher-order sequence transformers")
> +     (description "Zug is a C++ library providing transducers, that is composable

                                                                        ^,
I'd add a coma after "that is".

Otherwise LGTM.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 15:31:01 GMT) Full text and rfc822 format available.

Message #26 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 11:30:21 -0400
Hi,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> * gnu/packages/cpp.scm (immer): New variable.
> ---
>  gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
>
> diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> index 023d1c0337..da3567b5ef 100644
> --- a/gnu/packages/cpp.scm
> +++ b/gnu/packages/cpp.scm
> @@ -67,6 +67,7 @@ (define-module (gnu packages cpp)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages assembly)
>    #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages bdw-gc)
>    #:use-module (gnu packages boost)
>    #:use-module (gnu packages build-tools)
>    #:use-module (gnu packages c)
> @@ -1390,6 +1391,38 @@ (define-public libexpected
>      (home-page "https://tl.tartanllama.xyz/")
>      (license license:cc0)))
>  
> +(define-public immer
> +  (package
> +   (name "immer")
> +   (version "0.8.0")
> +   (source (origin
> +            (method git-fetch)
> +            (uri (git-reference
> +                  (url "https://github.com/arximboldi/immer")
> +                  (commit (string-append "v" version))))
> +            (file-name (git-file-name name version))
> +            (sha256
> +             (base32 "11km3l5h3rgsbj8yfyzk3fnx9na55l6zs2sxpx922yvlvs2blh27"))
> +            (modules '((guix build utils)))
> +            (snippet #~(begin
> +                         (delete-file "tools/include/doctest.h")
> +                         (delete-file "tools/include/catch.hpp")
> +                         (substitute* (find-files "test" "\\.[cih]pp")
> +                           (("<catch.hpp>") "<catch2/catch.hpp>")
> +                           (("<doctest.h>") "<doctest/doctest.h>"))
> +                         (substitute* (find-files "test/oss-fuzz" "\\.cpp")
> +                           ;; someone used the wrong header :)
> +                           (("<fmt/printf.h>") "<fmt/ostream.h>"))))))

Did you report the wrong header usage upstream?  A less intrusive fix
for the catch/doctest include problem could be to add their include
subdirectories as -I directives to the CXXFLAGS environment variable, or
since that's CMake, via its CMAKE_CXX_FLAGS make options.  See 'clara'
for an actual example.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 15:35:01 GMT) Full text and rfc822 format available.

Message #29 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 11:34:10 -0400
Hi Liliana,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> * gnu/packages/cpp.scm (lager): New variable.
> ---
>  gnu/packages/cpp.scm | 32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
>
> diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> index 0ab7d0785b..fe6a0edd31 100644
> --- a/gnu/packages/cpp.scm
> +++ b/gnu/packages/cpp.scm
> @@ -101,6 +101,7 @@ (define-module (gnu packages cpp)
>    #:use-module (gnu packages web)
>    #:use-module (gnu packages xml)
>    #:use-module (gnu packages xorg)
> +  #:autoload   (gnu packages serialization) (cereal)
>    #:use-module (ice-9 match))

Does autoload buys us something here?  Otherwise I'd stick with the
conventional use-module, to avoid future instances of cargo-culting :-).

In my opinion, that's a direction that should be pursued in Guile
(autoloading modules by default when declarative modules (no side
effects allowed) are used) rather than in every Guile applications out
there.

Otherwise this series LGTM, with the minor comments I left earlier taken
into account.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 15:52:01 GMT) Full text and rfc822 format available.

Message #32 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 17:51:39 +0200
Am Sonntag, dem 07.05.2023 um 11:30 -0400 schrieb Maxim Cournoyer:
> Hi,
> 
> Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
> 
> > * gnu/packages/cpp.scm (immer): New variable.
> > ---
> >  gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
> >  1 file changed, 33 insertions(+)
> > 
> > diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> > index 023d1c0337..da3567b5ef 100644
> > --- a/gnu/packages/cpp.scm
> > +++ b/gnu/packages/cpp.scm
> > @@ -67,6 +67,7 @@ (define-module (gnu packages cpp)
> >    #:use-module (gnu packages)
> >    #:use-module (gnu packages assembly)
> >    #:use-module (gnu packages autotools)
> > +  #:use-module (gnu packages bdw-gc)
> >    #:use-module (gnu packages boost)
> >    #:use-module (gnu packages build-tools)
> >    #:use-module (gnu packages c)
> > @@ -1390,6 +1391,38 @@ (define-public libexpected
> >      (home-page "https://tl.tartanllama.xyz/")
> >      (license license:cc0)))
> >  
> > +(define-public immer
> > +  (package
> > +   (name "immer")
> > +   (version "0.8.0")
> > +   (source (origin
> > +            (method git-fetch)
> > +            (uri (git-reference
> > +                  (url "https://github.com/arximboldi/immer")
> > +                  (commit (string-append "v" version))))
> > +            (file-name (git-file-name name version))
> > +            (sha256
> > +             (base32
> > "11km3l5h3rgsbj8yfyzk3fnx9na55l6zs2sxpx922yvlvs2blh27"))
> > +            (modules '((guix build utils)))
> > +            (snippet #~(begin
> > +                         (delete-file "tools/include/doctest.h")
> > +                         (delete-file "tools/include/catch.hpp")
> > +                         (substitute* (find-files "test"
> > "\\.[cih]pp")
> > +                           (("<catch.hpp>") "<catch2/catch.hpp>")
> > +                           (("<doctest.h>")
> > "<doctest/doctest.h>"))
> > +                         (substitute* (find-files "test/oss-fuzz"
> > "\\.cpp")
> > +                           ;; someone used the wrong header :)
> > +                           (("<fmt/printf.h>")
> > "<fmt/ostream.h>"))))))
> 
> Did you report the wrong header usage upstream?  
I must admit, I did not.

> A less intrusive fix for the catch/doctest include problem could be
> to add their include subdirectories as -I directives to the CXXFLAGS
> environment variable, or since that's CMake, via its CMAKE_CXX_FLAGS
> make options.  See 'clara' for an actual example.
There are other packages that take the approach I used here.  I do
think this is a CMakeFiles bug, but not one I want to fix.

Cheers

Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 15:58:02 GMT) Full text and rfc822 format available.

Message #35 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 17:57:17 +0200
Am Sonntag, dem 07.05.2023 um 11:34 -0400 schrieb Maxim Cournoyer:
> Hi Liliana,
> 
> Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
> 
> > * gnu/packages/cpp.scm (lager): New variable.
> > ---
> >  gnu/packages/cpp.scm | 32 ++++++++++++++++++++++++++++++++
> >  1 file changed, 32 insertions(+)
> > 
> > diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
> > index 0ab7d0785b..fe6a0edd31 100644
> > --- a/gnu/packages/cpp.scm
> > +++ b/gnu/packages/cpp.scm
> > @@ -101,6 +101,7 @@ (define-module (gnu packages cpp)
> >    #:use-module (gnu packages web)
> >    #:use-module (gnu packages xml)
> >    #:use-module (gnu packages xorg)
> > +  #:autoload   (gnu packages serialization) (cereal)
> >    #:use-module (ice-9 match))
> 
> Does autoload buys us something here?  Otherwise I'd stick with the
> conventional use-module, to avoid future instances of cargo-culting
> :-).
It only frees us from the import cycle that would exist otherwise.

> In my opinion, that's a direction that should be pursued in Guile
> (autoloading modules by default when declarative modules (no side
> effects allowed) are used) rather than in every Guile applications
> out there.
Not sure I understand what you're saying, nor the impact of it.

Cheers





Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 17:12:01 GMT) Full text and rfc822 format available.

Message #38 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 13:10:56 -0400
Hi,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> Am Sonntag, dem 07.05.2023 um 11:34 -0400 schrieb Maxim Cournoyer:
>> Hi Liliana,
>> 
>> Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
>> 
>> > * gnu/packages/cpp.scm (lager): New variable.
>> > ---
>> >  gnu/packages/cpp.scm | 32 ++++++++++++++++++++++++++++++++
>> >  1 file changed, 32 insertions(+)
>> > 
>> > diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
>> > index 0ab7d0785b..fe6a0edd31 100644
>> > --- a/gnu/packages/cpp.scm
>> > +++ b/gnu/packages/cpp.scm
>> > @@ -101,6 +101,7 @@ (define-module (gnu packages cpp)
>> >    #:use-module (gnu packages web)
>> >    #:use-module (gnu packages xml)
>> >    #:use-module (gnu packages xorg)
>> > +  #:autoload   (gnu packages serialization) (cereal)
>> >    #:use-module (ice-9 match))
>> 
>> Does autoload buys us something here?  Otherwise I'd stick with the
>> conventional use-module, to avoid future instances of cargo-culting
>> :-).
> It only frees us from the import cycle that would exist otherwise.

OK, that's a good reason to have it.

>> In my opinion, that's a direction that should be pursued in Guile
>> (autoloading modules by default when declarative modules (no side
>> effects allowed) are used) rather than in every Guile applications
>> out there.
> Not sure I understand what you're saying, nor the impact of it.

I meant that it'd be nice if Guile gave us lazy loading by default
instead of relying on humans to use #:autoload where it makes sense.

-- 
Thanks,
Maxim




Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 17:13:02 GMT) Full text and rfc822 format available.

Message #41 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 13:12:43 -0400
Hi,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> Am Sonntag, dem 07.05.2023 um 11:30 -0400 schrieb Maxim Cournoyer:
>> Hi,
>> 
>> Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
>> 
>> > * gnu/packages/cpp.scm (immer): New variable.
>> > ---
>> >  gnu/packages/cpp.scm | 33 +++++++++++++++++++++++++++++++++
>> >  1 file changed, 33 insertions(+)
>> > 
>> > diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
>> > index 023d1c0337..da3567b5ef 100644
>> > --- a/gnu/packages/cpp.scm
>> > +++ b/gnu/packages/cpp.scm
>> > @@ -67,6 +67,7 @@ (define-module (gnu packages cpp)
>> >    #:use-module (gnu packages)
>> >    #:use-module (gnu packages assembly)
>> >    #:use-module (gnu packages autotools)
>> > +  #:use-module (gnu packages bdw-gc)
>> >    #:use-module (gnu packages boost)
>> >    #:use-module (gnu packages build-tools)
>> >    #:use-module (gnu packages c)
>> > @@ -1390,6 +1391,38 @@ (define-public libexpected
>> >      (home-page "https://tl.tartanllama.xyz/")
>> >      (license license:cc0)))
>> >  
>> > +(define-public immer
>> > +  (package
>> > +   (name "immer")
>> > +   (version "0.8.0")
>> > +   (source (origin
>> > +            (method git-fetch)
>> > +            (uri (git-reference
>> > +                  (url "https://github.com/arximboldi/immer")
>> > +                  (commit (string-append "v" version))))
>> > +            (file-name (git-file-name name version))
>> > +            (sha256
>> > +             (base32
>> > "11km3l5h3rgsbj8yfyzk3fnx9na55l6zs2sxpx922yvlvs2blh27"))
>> > +            (modules '((guix build utils)))
>> > +            (snippet #~(begin
>> > +                         (delete-file "tools/include/doctest.h")
>> > +                         (delete-file "tools/include/catch.hpp")
>> > +                         (substitute* (find-files "test"
>> > "\\.[cih]pp")
>> > +                           (("<catch.hpp>") "<catch2/catch.hpp>")
>> > +                           (("<doctest.h>")
>> > "<doctest/doctest.h>"))
>> > +                         (substitute* (find-files "test/oss-fuzz"
>> > "\\.cpp")
>> > +                           ;; someone used the wrong header :)
>> > +                           (("<fmt/printf.h>")
>> > "<fmt/ostream.h>"))))))
>> 
>> Did you report the wrong header usage upstream?  
> I must admit, I did not.

Could you please do so, if that's not too much to ask?  Then include a
(see: URL) next to the substitution comment.

>> A less intrusive fix for the catch/doctest include problem could be
>> to add their include subdirectories as -I directives to the CXXFLAGS
>> environment variable, or since that's CMake, via its CMAKE_CXX_FLAGS
>> make options.  See 'clara' for an actual example.
> There are other packages that take the approach I used here.  I do
> think this is a CMakeFiles bug, but not one I want to fix.

I think catch2 is selfom used from the system (typically bundled), must
not ship with any pkg-config or proper support to be auto-detected at
configure time, which gives us the situation we're in.

-- 
Thanks,
Maxim

Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Sun, 07 May 2023 19:41:02 GMT) Full text and rfc822 format available.

Message #44 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: bug#63330: [PATCH 0/4] Functional programming?  In my C++?!
 It's more likely than you think!
Date: Sun, 07 May 2023 21:40:52 +0200
Hi,

Am Sonntag, dem 07.05.2023 um 13:12 -0400 schrieb Maxim Cournoyer:
> Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:
> 
> > Am Sonntag, dem 07.05.2023 um 11:30 -0400 schrieb Maxim Cournoyer:
> > > Did you report the wrong header usage upstream?  
> > I must admit, I did not.
> 
> Could you please do so, if that's not too much to ask?  Then include
> a (see: URL) next to the substitution comment.
I sent a mail to the address in the README; let's wait for a reply.

> > > A less intrusive fix for the catch/doctest include problem could
> > > be to add their include subdirectories as -I directives to the
> > > CXXFLAGS environment variable, or since that's CMake, via its
> > > CMAKE_CXX_FLAGS make options.  See 'clara' for an actual example.
> > There are other packages that take the approach I used here.  I do
> > think this is a CMakeFiles bug, but not one I want to fix.
Correction to myself: I now see that we only need to edit those source
files because we remove the bundled ones, but that's an argument
towards keeping that within the snippet imho. 

> I think catch2 is selfom used from the system (typically bundled),
> must not ship with any pkg-config or proper support to be auto-
> detected at configure time, which gives us the situation we're in.
Joke's on you, catch2 ships with both CMake's config stuff *and* pkg-
config.  Vendoring it is next to pointless (that is, unless you regard
sneaking it onto ancient Debian as the point).  Doctest also comes with
the usual CMake blurb.

Cheers




Information forwarded to guix-patches <at> gnu.org:
bug#63330; Package guix-patches. (Thu, 11 May 2023 18:30:03 GMT) Full text and rfc822 format available.

Message #47 received at 63330 <at> debbugs.gnu.org (full text, mbox):

From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>, Liliana Marie Prikler
 <liliana.prikler <at> gmail.com>
Cc: 63330 <at> debbugs.gnu.org
Subject: Re: [bug#63330] [PATCH 0/4] Functional programming? In my C++?!
 It's more likely than you think!
Date: Thu, 11 May 2023 15:23:49 +0200
Hi,

On dim., 07 mai 2023 at 13:10, Maxim Cournoyer <maxim.cournoyer <at> gmail.com> wrote:

>>> > +  #:autoload   (gnu packages serialization) (cereal)
>>> >    #:use-module (ice-9 match))
>>> 
>>> Does autoload buys us something here?  Otherwise I'd stick with the
>>> conventional use-module, to avoid future instances of cargo-culting
>>> :-).
>> It only frees us from the import cycle that would exist otherwise.
>
> OK, that's a good reason to have it.

Maybe a comment would be helpful to remember that answer. :-)

Elsewhere, we use:

--8<---------------cut here---------------start------------->8---
    (inputs
     (list ;; XXX: We can't simply #:use-module due to a cycle somewhere.
           (module-ref
            (resolve-interface '(gnu packages engineering))
            'cgns)
           cli11
[...]           
--8<---------------cut here---------------end--------------->8---

see paraview-5.9, d-tools, make-autoconf-wrapper, etc.


Cheers,
simon




Reply sent to Liliana Marie Prikler <liliana.prikler <at> gmail.com>:
You have taken responsibility. (Sun, 14 May 2023 10:32:02 GMT) Full text and rfc822 format available.

Notification sent to Liliana Marie Prikler <liliana.prikler <at> gmail.com>:
bug acknowledged by developer. (Sun, 14 May 2023 10:32:02 GMT) Full text and rfc822 format available.

Message #52 received at 63330-done <at> debbugs.gnu.org (full text, mbox):

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Simon Tournier <zimon.toutoune <at> gmail.com>, Maxim Cournoyer
 <maxim.cournoyer <at> gmail.com>
Cc: 63330-done <at> debbugs.gnu.org
Subject: Re: [bug#63330] [PATCH 0/4] Functional programming? In my C++?!
 It's more likely than you think!
Date: Sun, 14 May 2023 12:31:00 +0200
Am Donnerstag, dem 11.05.2023 um 15:23 +0200 schrieb Simon Tournier:
> Maybe a comment would be helpful to remember that answer. :-)
Point taken.

Pushed the series with a follow-up commit to add said comment.

Cheers




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 11 Jun 2023 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 319 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.