* About Guile crypto support @ 2013-02-03 12:55 Nala Ginrut 2013-02-03 15:37 ` Thien-Thi Nguyen ` (2 more replies) 0 siblings, 3 replies; 35+ messages in thread From: Nala Ginrut @ 2013-02-03 12:55 UTC (permalink / raw) To: guile-devel As mentioned in another thread about digest algorithm support in Guile, my plan is use part of implementation of libgcrypt and make a wrapper, then put into libguile. But now I found weinholt's Scheme industria lib, which contains all mainstream crypto(not only digest) algorithm. http://weinholt.se/industria/manual/crypto.html#crypto So what's your opinion, guys? Would you prefer C implementation or Scheme way? Thanks! ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-03 12:55 About Guile crypto support Nala Ginrut @ 2013-02-03 15:37 ` Thien-Thi Nguyen 2013-02-04 1:14 ` Daniel Hartwig 2013-02-04 23:03 ` Ludovic Courtès 2 siblings, 0 replies; 35+ messages in thread From: Thien-Thi Nguyen @ 2013-02-03 15:37 UTC (permalink / raw) To: Nala Ginrut; +Cc: guile-devel [-- Attachment #1: Type: text/plain, Size: 550 bytes --] () Nala Ginrut <nalaginrut@gmail.com> () Sun, 03 Feb 2013 20:55:46 +0800 Would you prefer C implementation or Scheme way? The less C the better, generally, IMHO. -- Thien-Thi Nguyen ..................................... GPG key: 4C807502 . NB: ttn at glug dot org is not me . . (and has not been since 2007 or so) . . ACCEPT NO SUBSTITUTES . ........... please send technical questions to mailing lists ........... [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-03 12:55 About Guile crypto support Nala Ginrut 2013-02-03 15:37 ` Thien-Thi Nguyen @ 2013-02-04 1:14 ` Daniel Hartwig 2013-02-04 3:12 ` Nala Ginrut 2013-02-04 23:03 ` Ludovic Courtès 2 siblings, 1 reply; 35+ messages in thread From: Daniel Hartwig @ 2013-02-04 1:14 UTC (permalink / raw) To: guile-devel Hello On 3 February 2013 20:55, Nala Ginrut <nalaginrut@gmail.com> wrote: > As mentioned in another thread about digest algorithm support in Guile, > my plan is use part of implementation of libgcrypt and make a wrapper, > then put into libguile. > But now I found weinholt's Scheme industria lib, which contains all > mainstream crypto(not only digest) algorithm. > http://weinholt.se/industria/manual/crypto.html#crypto As mentioned on that page, there are some issues that apply to any pure Scheme implementation: > Beware that if you're using some of these libraries for sensitive > data, let's say passwords, then there is probably no way to make > sure a password is ever gone from memory. There is no guarantee that > the passwords will not be swapped out to disk or transmitted by > radio. Libgcrypt provides a means to specify that some data should be stored in secured memory, which will never be swapped to disk. Doing something similar in Guile may be problematic, at least with a Scheme-only implementation. > So what's your opinion, guys? > Would you prefer C implementation or Scheme way? As gcrypt is mature, reimplementing it in either C or Scheme just for Guile does not seem useful — on it's own. An FFI wrapper or extension benefits from upstream security and maintenance efforts. If you have a particular interest in learning about crypto. algorithms, by all means port or write your own implementation using whichever language. If you want it to have a Scheme interface, then Scheme seems a logical choice to use. If your goal is only to provide crypto. support to Guile programs, then time is better spent providing a wrapper to the existing library. Concerns about adding an external dependency do not hold much weight next to the advantages of directly using the library; “don't repeat yourself”, and all that. Perhaps you are aware that there an extension for gcrypt under development, with modules for the hash and randomize functions: <https://gitorious.org/gcrypt-guile/>. Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-04 1:14 ` Daniel Hartwig @ 2013-02-04 3:12 ` Nala Ginrut 2013-02-04 3:35 ` Daniel Hartwig 0 siblings, 1 reply; 35+ messages in thread From: Nala Ginrut @ 2013-02-04 3:12 UTC (permalink / raw) To: Daniel Hartwig; +Cc: guile-devel On Mon, 2013-02-04 at 09:14 +0800, Daniel Hartwig wrote: > Hello > > On 3 February 2013 20:55, Nala Ginrut <nalaginrut@gmail.com> wrote: > > As mentioned in another thread about digest algorithm support in Guile, > > my plan is use part of implementation of libgcrypt and make a wrapper, > > then put into libguile. > > But now I found weinholt's Scheme industria lib, which contains all > > mainstream crypto(not only digest) algorithm. > > http://weinholt.se/industria/manual/crypto.html#crypto > > As mentioned on that page, there are some issues that apply to any > pure Scheme implementation: > If it's worthy, I can do some modification. > > Beware that if you're using some of these libraries for sensitive > > data, let's say passwords, then there is probably no way to make > > sure a password is ever gone from memory. There is no guarantee that > > the passwords will not be swapped out to disk or transmitted by > > radio. > > Libgcrypt provides a means to specify that some data should be stored > in secured memory, which will never be swapped to disk. Doing > something similar in Guile may be problematic, at least with a > Scheme-only implementation. > > > So what's your opinion, guys? > > Would you prefer C implementation or Scheme way? > > As gcrypt is mature, reimplementing it in either C or Scheme just for > Guile does not seem useful — on it's own. An FFI wrapper or extension > benefits from upstream security and maintenance efforts. > > > If you have a particular interest in learning about crypto. algorithms, > by all means port or write your own implementation using whichever > language. If you want it to have a Scheme interface, then Scheme > seems a logical choice to use. > Well, no ;-) > If your goal is only to provide crypto. support to Guile programs, > then time is better spent providing a wrapper to the existing library. > Concerns about adding an external dependency do not hold much weight > next to the advantages of directly using the library; “don't repeat > yourself”, and all that. > That's my aim, nowadays a language should provide md5/sha1 at least since they are very common. > Perhaps you are aware that there an extension for gcrypt under > development, with modules for the hash and randomize functions: > <https://gitorious.org/gcrypt-guile/>. > I have a similar project too: https://gitorious.org/nacre/libgcrypt-guile Write a lib-wrapper is another story, guys who needs more specific feature(efficiency/security) could use these packages from guildhall. But my opinion is to provide the common digest API in ice-9, many guys asked such a questions, and I suggested them use my libgcrypt-guile, but I can't answer why Guile doesn't has these common API. So I decide to add them. What do you think? > > Regards > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-04 3:12 ` Nala Ginrut @ 2013-02-04 3:35 ` Daniel Hartwig 2013-02-04 4:15 ` Nala Ginrut 0 siblings, 1 reply; 35+ messages in thread From: Daniel Hartwig @ 2013-02-04 3:35 UTC (permalink / raw) To: Nala Ginrut; +Cc: guile-devel On 4 February 2013 11:12, Nala Ginrut <nalaginrut@gmail.com> wrote: >> If your goal is only to provide crypto. support to Guile programs, >> then time is better spent providing a wrapper to the existing library. >> Concerns about adding an external dependency do not hold much weight >> next to the advantages of directly using the library; “don't repeat >> yourself”, and all that. >> > > That's my aim, nowadays a language should provide md5/sha1 at least > since they are very common. > >> Perhaps you are aware that there an extension for gcrypt under >> development, with modules for the hash and randomize functions: >> <https://gitorious.org/gcrypt-guile/>. >> > > I have a similar project too: > https://gitorious.org/nacre/libgcrypt-guile > The other project is much further along, providing direct bindings to gcrypt and has a convenience form (quick-hash ALGORITHM DATA). Suggest to continue working there rather than duplicating efforting. Taking a quick look at your code, there are some problems that immediately stand out. The calls to gcry_control should not be in mda, being repeated on every call; libgcrypt documents even specify that language bindings should not handle init, which is a task for the application. > Write a lib-wrapper is another story, guys who needs more specific > feature(efficiency/security) could use these packages from guildhall. > But my opinion is to provide the common digest API in ice-9, many guys > asked such a questions, and I suggested them use my libgcrypt-guile, but > I can't answer why Guile doesn't has these common API. So I decide to > add them. > > What do you think? Personally I would work with the existing gcrypt-guile project. It is LGPL and anyone who needs such functionality can easily import it. As mentioned above, it already provides the quick-hash form which I believe is what you are looking for. I also don't any pressing need to move this in to the core Guile distribution when it is freely available as an addon. But I see that we disagreed on this same point with your colorized module as well :-) Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-04 3:35 ` Daniel Hartwig @ 2013-02-04 4:15 ` Nala Ginrut 0 siblings, 0 replies; 35+ messages in thread From: Nala Ginrut @ 2013-02-04 4:15 UTC (permalink / raw) To: Daniel Hartwig; +Cc: guile-devel On Mon, 2013-02-04 at 11:35 +0800, Daniel Hartwig wrote: > On 4 February 2013 11:12, Nala Ginrut <nalaginrut@gmail.com> wrote: > >> If your goal is only to provide crypto. support to Guile programs, > >> then time is better spent providing a wrapper to the existing library. > >> Concerns about adding an external dependency do not hold much weight > >> next to the advantages of directly using the library; “don't repeat > >> yourself”, and all that. > >> > > > > That's my aim, nowadays a language should provide md5/sha1 at least > > since they are very common. > > > >> Perhaps you are aware that there an extension for gcrypt under > >> development, with modules for the hash and randomize functions: > >> <https://gitorious.org/gcrypt-guile/>. > >> > > > > I have a similar project too: > > https://gitorious.org/nacre/libgcrypt-guile > > > > The other project is much further along, providing direct bindings to > gcrypt and has a convenience form (quick-hash ALGORITHM DATA). > Suggest to continue working there rather than duplicating efforting. > > Taking a quick look at your code, there are some problems that > immediately stand out. The calls to gcry_control should not be in > mda, being repeated on every call; libgcrypt documents even specify > that language bindings should not handle init, which is a task for the > application. > libgcrypt-guile is old and earlier than grcypt-guile one year. I need digest things and there's no guildhall, so I have to write a buggy one. I'm glad there's a better choice for it. ;-) > > Write a lib-wrapper is another story, guys who needs more specific > > feature(efficiency/security) could use these packages from guildhall. > > But my opinion is to provide the common digest API in ice-9, many guys > > asked such a questions, and I suggested them use my libgcrypt-guile, but > > I can't answer why Guile doesn't has these common API. So I decide to > > add them. > > > > What do you think? > > Personally I would work with the existing gcrypt-guile project. It is > LGPL and anyone who needs such functionality can easily import it. As > mentioned above, it already provides the quick-hash form which I > believe is what you are looking for. > > I also don't any pressing need to move this in to the core Guile > distribution when it is freely available as an addon. But I see that > we disagreed on this same point with your colorized module as well :-) > Well, I think there's a little difference to add module to core between us. My opinion is to add very common thing to core, though sometimes these things maybe not a very proper core API. But anyway, considering guildhall works in the long term, these two opinions difference are trivial. ;-) I don't against anything about gcrypt-guile, it's fine. But I think adding common digest APIs into core is a considerable topic. If folks need more powerful crypto things, finding other more expert packages in the guildhall is a better choice. But most of the time, they just need md5/sha since doing some hash work is very common nowadays. Users don't have to download & compile another project, or install guildhall for that if they just need md5. They will choice a pipe for 'md5sum' instead. I do think Guile should provide convenience for such issue. What do you think? > Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-03 12:55 About Guile crypto support Nala Ginrut 2013-02-03 15:37 ` Thien-Thi Nguyen 2013-02-04 1:14 ` Daniel Hartwig @ 2013-02-04 23:03 ` Ludovic Courtès 2013-02-05 2:43 ` Nala Ginrut 2 siblings, 1 reply; 35+ messages in thread From: Ludovic Courtès @ 2013-02-04 23:03 UTC (permalink / raw) To: guile-devel Nala Ginrut <nalaginrut@gmail.com> skribis: > As mentioned in another thread about digest algorithm support in Guile, > my plan is use part of implementation of libgcrypt and make a wrapper, > then put into libguile. We probably don’t want Guile to depend on libgcrypt. So, instead, I’d suggest choosing the best of the 10 gcrypt FFI bindings already mentioned ;-), and putting it in the guildhall. If you want to go further, you (or its authors) could submit it for inclusion in libgcrypt proper. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-04 23:03 ` Ludovic Courtès @ 2013-02-05 2:43 ` Nala Ginrut 2013-02-05 2:57 ` Noah Lavine 2013-02-05 15:48 ` Ludovic Courtès 0 siblings, 2 replies; 35+ messages in thread From: Nala Ginrut @ 2013-02-05 2:43 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-devel On Tue, 2013-02-05 at 00:03 +0100, Ludovic Courtès wrote: > Nala Ginrut <nalaginrut@gmail.com> skribis: > > > As mentioned in another thread about digest algorithm support in Guile, > > my plan is use part of implementation of libgcrypt and make a wrapper, > > then put into libguile. > > We probably don’t want Guile to depend on libgcrypt. > No, I didn't mean to use libgcrypt directly, I just suggested reuse part of libgcrypt code(only the common digest algorithm) and make wrapper, then put the C code in libguile. > So, instead, I’d suggest choosing the best of the 10 gcrypt FFI bindings > already mentioned ;-), and putting it in the guildhall. > > If you want to go further, you (or its authors) could submit it for > inclusion in libgcrypt proper. > The gcrypt-guile project is doing so, I'll help it if I can. But my original thought is orthogonal with gcrypt-guile, just put some common digest algorithm in libguile rather than a full-stack crypto-lib. My suggest opposed by many guys, since they don't think md5/sha are very common things. ;-) But I'm dealing with server & web framework development, so I need digest so much, and maybe it's no so common. I'll let this topic alone, till others found they have same requirements, or just forget about it. ;-D > Thanks, > Ludo’. > > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-05 2:43 ` Nala Ginrut @ 2013-02-05 2:57 ` Noah Lavine 2013-02-06 13:58 ` Nala Ginrut 2013-02-05 15:48 ` Ludovic Courtès 1 sibling, 1 reply; 35+ messages in thread From: Noah Lavine @ 2013-02-05 2:57 UTC (permalink / raw) To: Nala Ginrut; +Cc: Ludovic Courtès, guile-devel [-- Attachment #1: Type: text/plain, Size: 2043 bytes --] Hello, I was just thinking about this, and I was wondering, can you hash an arbitrary Guile object? And if so, what do you hash? (I mean, algorithms like SHA-1 are defined on sequences of bits, as I understand it. So what collection of bits do you hash?) And is the hash recursive? (I.e. is it an equal?-hash, an eqv?-hash, or an eq?-hash.) If I understand the conversation correctly, the answer is yes, and that you hash the bit representation that Guile uses internally, and it is an equal?-hash. Is that accurate? Thanks, Noah On Mon, Feb 4, 2013 at 9:43 PM, Nala Ginrut <nalaginrut@gmail.com> wrote: > On Tue, 2013-02-05 at 00:03 +0100, Ludovic Courtès wrote: > > Nala Ginrut <nalaginrut@gmail.com> skribis: > > > > > As mentioned in another thread about digest algorithm support in Guile, > > > my plan is use part of implementation of libgcrypt and make a wrapper, > > > then put into libguile. > > > > We probably don’t want Guile to depend on libgcrypt. > > > > No, I didn't mean to use libgcrypt directly, I just suggested reuse part > of libgcrypt code(only the common digest algorithm) and make wrapper, > then put the C code in libguile. > > > So, instead, I’d suggest choosing the best of the 10 gcrypt FFI bindings > > already mentioned ;-), and putting it in the guildhall. > > > > If you want to go further, you (or its authors) could submit it for > > inclusion in libgcrypt proper. > > > > The gcrypt-guile project is doing so, I'll help it if I can. > But my original thought is orthogonal with gcrypt-guile, just put some > common digest algorithm in libguile rather than a full-stack crypto-lib. > > My suggest opposed by many guys, since they don't think md5/sha are very > common things. ;-) > But I'm dealing with server & web framework development, so I need > digest so much, and maybe it's no so common. > I'll let this topic alone, till others found they have same > requirements, or just forget about it. ;-D > > > Thanks, > > Ludo’. > > > > > > > > [-- Attachment #2: Type: text/html, Size: 2713 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-05 2:57 ` Noah Lavine @ 2013-02-06 13:58 ` Nala Ginrut 0 siblings, 0 replies; 35+ messages in thread From: Nala Ginrut @ 2013-02-06 13:58 UTC (permalink / raw) To: Noah Lavine; +Cc: Ludovic Courtès, guile-devel hi Noah! On Mon, 2013-02-04 at 21:57 -0500, Noah Lavine wrote: > Hello, > > > I was just thinking about this, and I was wondering, can you hash an > arbitrary Guile object? And if so, what do you hash? (I mean, > algorithms like SHA-1 are defined on sequences of bits, as I > understand it. So what collection of bits do you hash?) And is the > hash recursive? (I.e. is it an equal?-hash, an eqv?-hash, or an > eq?-hash.) > > > If I understand the conversation correctly, the answer is yes, and > that you hash the bit representation that Guile uses internally, and > it is an equal?-hash. Is that accurate? > According to our talking about this topic, I'll explain something ;-P My goal is not to hash arbitrary object. As I said, I'm dealing with Server-design and web-framework, so what I need is to hash bytevectors and strings. Since Guile2 uses character-string instead of byte-string, I have to mention strings separately. > Thanks! > Thanks, > Noah > > > On Mon, Feb 4, 2013 at 9:43 PM, Nala Ginrut <nalaginrut@gmail.com> > wrote: > On Tue, 2013-02-05 at 00:03 +0100, Ludovic Courtès wrote: > > Nala Ginrut <nalaginrut@gmail.com> skribis: > > > > > As mentioned in another thread about digest algorithm > support in Guile, > > > my plan is use part of implementation of libgcrypt and > make a wrapper, > > > then put into libguile. > > > > We probably don’t want Guile to depend on libgcrypt. > > > > > No, I didn't mean to use libgcrypt directly, I just suggested > reuse part > of libgcrypt code(only the common digest algorithm) and make > wrapper, > then put the C code in libguile. > > > So, instead, I’d suggest choosing the best of the 10 gcrypt > FFI bindings > > already mentioned ;-), and putting it in the guildhall. > > > > If you want to go further, you (or its authors) could submit > it for > > inclusion in libgcrypt proper. > > > > > The gcrypt-guile project is doing so, I'll help it if I can. > But my original thought is orthogonal with gcrypt-guile, just > put some > common digest algorithm in libguile rather than a full-stack > crypto-lib. > > My suggest opposed by many guys, since they don't think > md5/sha are very > common things. ;-) > But I'm dealing with server & web framework development, so I > need > digest so much, and maybe it's no so common. > I'll let this topic alone, till others found they have same > requirements, or just forget about it. ;-D > > > Thanks, > > Ludo’. > > > > > > > > > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-05 2:43 ` Nala Ginrut 2013-02-05 2:57 ` Noah Lavine @ 2013-02-05 15:48 ` Ludovic Courtès 2013-02-06 4:18 ` Daniel Hartwig 1 sibling, 1 reply; 35+ messages in thread From: Ludovic Courtès @ 2013-02-05 15:48 UTC (permalink / raw) To: Nala Ginrut; +Cc: guile-devel Nala Ginrut <nalaginrut@gmail.com> skribis: > On Tue, 2013-02-05 at 00:03 +0100, Ludovic Courtès wrote: [...] >> We probably don’t want Guile to depend on libgcrypt. >> > > No, I didn't mean to use libgcrypt directly, I just suggested reuse part > of libgcrypt code(only the common digest algorithm) and make wrapper, > then put the C code in libguile. [...] > The gcrypt-guile project is doing so, I'll help it if I can. > But my original thought is orthogonal with gcrypt-guile, just put some > common digest algorithm in libguile rather than a full-stack crypto-lib. We could actually use the Gnulib crypto modules. There’s a duplication/convenience trade-off: we’d provide useful functionality by default, at the expense of duplicating C code in our tarballs (2500 SLOC for Gnulib’s sha*.[ch] and md5.[ch].) Opinions? I think I’d be more inclined to have good bindings in libgcrypt proper, but I’d like to hear what others think. Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-05 15:48 ` Ludovic Courtès @ 2013-02-06 4:18 ` Daniel Hartwig 2013-02-06 4:28 ` Daniel Hartwig 2013-02-08 16:21 ` Ludovic Courtès 0 siblings, 2 replies; 35+ messages in thread From: Daniel Hartwig @ 2013-02-06 4:18 UTC (permalink / raw) To: guile-devel On 5 February 2013 23:48, Ludovic Courtès <ludo@gnu.org> wrote: >> The gcrypt-guile project is doing so, I'll help it if I can. >> But my original thought is orthogonal with gcrypt-guile, just put some >> common digest algorithm in libguile rather than a full-stack crypto-lib. > > We could actually use the Gnulib crypto modules. There’s a > duplication/convenience trade-off: we’d provide useful functionality by > default, at the expense of duplicating C code in our tarballs (2500 SLOC > for Gnulib’s sha*.[ch] and md5.[ch].) > > Opinions? Avoiding duplication and feature creep /in the core/ is highly desirable. Guildhall makes it convenient enough to pull in additional features; guile-lib has md5 and industria provides also sha and others. A small core with addons has some obvious benefits, for the platform. Maintainers may disagree, though I notice that historic choices to include some modules (such as sxml, web) in the core were made before the advent of Guildhall. I wonder where these modules would reside if they were introduced in the current situation …? > > I think I’d be more inclined to have good bindings in libgcrypt proper, Yes, this solution will have many benefits. The currently available bindings are, well, not so great. However, the API is small enough that building a proper set will not take much effort. Curiously, some parts make use of S-expressions. Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-06 4:18 ` Daniel Hartwig @ 2013-02-06 4:28 ` Daniel Hartwig 2013-02-08 16:21 ` Ludovic Courtès 1 sibling, 0 replies; 35+ messages in thread From: Daniel Hartwig @ 2013-02-06 4:28 UTC (permalink / raw) To: guile-devel On 6 February 2013 12:18, Daniel Hartwig <mandyke@gmail.com> wrote: > Avoiding duplication and feature creep /in the core/ is highly > desirable. Guildhall makes it convenient enough to pull in additional > features; guile-lib has md5 and industria provides also sha and > others. During yesterday's IRC discussion the idea was raised to somehow provide a “batteries included” package that would include the core and a selection of “useful” addons. I suppose that is similar to the original purpose of guile-lib. In apt terms, that would probably just be a meta-package depending on guile and a few others. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-06 4:18 ` Daniel Hartwig 2013-02-06 4:28 ` Daniel Hartwig @ 2013-02-08 16:21 ` Ludovic Courtès 2013-02-09 1:37 ` Daniel Hartwig 1 sibling, 1 reply; 35+ messages in thread From: Ludovic Courtès @ 2013-02-08 16:21 UTC (permalink / raw) To: guile-devel Daniel Hartwig <mandyke@gmail.com> skribis: > On 5 February 2013 23:48, Ludovic Courtès <ludo@gnu.org> wrote: >>> The gcrypt-guile project is doing so, I'll help it if I can. >>> But my original thought is orthogonal with gcrypt-guile, just put some >>> common digest algorithm in libguile rather than a full-stack crypto-lib. >> >> We could actually use the Gnulib crypto modules. There’s a >> duplication/convenience trade-off: we’d provide useful functionality by >> default, at the expense of duplicating C code in our tarballs (2500 SLOC >> for Gnulib’s sha*.[ch] and md5.[ch].) >> >> Opinions? > > Avoiding duplication and feature creep /in the core/ is highly > desirable. Guildhall makes it convenient enough to pull in additional > features; guile-lib has md5 and industria provides also sha and > others. Scheme implementations of these would be impractical in many cases (too slow). > A small core with addons has some obvious benefits, for the platform. > Maintainers may disagree, though I notice that historic choices to > include some modules (such as sxml, web) in the core were made before > the advent of Guildhall. I wonder where these modules would reside if > they were introduced in the current situation …? Some modules were deliberately moved from guile-lib to Guile to improve integration, and to come with more standard APIs by default. I’m not sure that having guildhall changes much in that respect. >> I think I’d be more inclined to have good bindings in libgcrypt proper, > > Yes, this solution will have many benefits. The currently available > bindings are, well, not so great. However, the API is small enough > that building a proper set will not take much effort. Yeah, apparently there are several half-baked bindings around. Let’s just polish one of them, and submit it for inclusion in libgcrypt. Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-08 16:21 ` Ludovic Courtès @ 2013-02-09 1:37 ` Daniel Hartwig 2013-02-09 15:12 ` Ludovic Courtès 0 siblings, 1 reply; 35+ messages in thread From: Daniel Hartwig @ 2013-02-09 1:37 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-devel On 9 February 2013 00:21, Ludovic Courtès <ludo@gnu.org> wrote: > > Yeah, apparently there are several half-baked bindings around. Let’s > just polish one of them, and submit it for inclusion in libgcrypt. I have already submitted some additions to one, but I may just continue in a new repository. By the way, I very much like the conventions used in the GnuTLS bindings. The enums in particular make a lot of sense for a security library, with the extreme type safety they provide. I will pursue a similar approach. One question. With the current state of FFI, do you think it matters much whether the bulk of the bindings are done in C or FFI? Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 1:37 ` Daniel Hartwig @ 2013-02-09 15:12 ` Ludovic Courtès 2013-02-09 17:02 ` Andy Wingo 2013-02-11 9:51 ` Nala Ginrut 0 siblings, 2 replies; 35+ messages in thread From: Ludovic Courtès @ 2013-02-09 15:12 UTC (permalink / raw) To: Daniel Hartwig; +Cc: guile-devel Hi, Daniel Hartwig <mandyke@gmail.com> skribis: > By the way, I very much like the conventions used in the GnuTLS > bindings. The enums in particular make a lot of sense for a security > library, with the extreme type safety they provide. I will pursue a > similar approach. Yeah, I think it’s helpful. > One question. With the current state of FFI, do you think it matters > much whether the bulk of the bindings are done in C or FFI? I think it depends on the amount of public C structs, enums, inlines, and constants, and how often they are changed. When there are too many of them and they are subject to change, it might be easier to use C (though that can be worked around from the FFI by calling the C compiler, as in [0].) My impression is that libgcrypt uses mostly opaque pointer types and has a stable API, so the using FFI should be just fine. An issue with the FFI is distros where .la and .so files are only available in the -dev package, because then ‘dynamic-link’ won’t work unless that -dev package is installed (as recently discussed on guile-user.) Thanks, Ludo’. [0] http://git.sv.gnu.org/cgit/libchop.git/tree/guile2/chop/internal.scm#n130 ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 15:12 ` Ludovic Courtès @ 2013-02-09 17:02 ` Andy Wingo 2013-02-09 17:50 ` Mark H Weaver 2013-02-11 10:46 ` Mike Gran 2013-02-11 9:51 ` Nala Ginrut 1 sibling, 2 replies; 35+ messages in thread From: Andy Wingo @ 2013-02-09 17:02 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guile-devel On Sat 09 Feb 2013 16:12, ludo@gnu.org (Ludovic Courtès) writes: > An issue with the FFI is distros where .la and .so files are only > available in the -dev package, because then ‘dynamic-link’ won’t work > unless that -dev package is installed (as recently discussed on > guile-user.) I have the feeling that we should implement our own dynamic-link function without libltdl. It would eliminate a dependency and allow us to use other search path rules, like ones that could deal with this case. I think the situation would actually be better on other architectures because we wouldn't have to deal with bugs like this one: http://thread.gmane.org/gmane.lisp.guile.bugs/5269 Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 17:02 ` Andy Wingo @ 2013-02-09 17:50 ` Mark H Weaver 2013-02-09 20:44 ` Noah Lavine ` (2 more replies) 2013-02-11 10:46 ` Mike Gran 1 sibling, 3 replies; 35+ messages in thread From: Mark H Weaver @ 2013-02-09 17:50 UTC (permalink / raw) To: Andy Wingo; +Cc: Ludovic Courtès, guile-devel Hi Andy, Andy Wingo <wingo@pobox.com> writes: > On Sat 09 Feb 2013 16:12, ludo@gnu.org (Ludovic Courtès) writes: > >> An issue with the FFI is distros where .la and .so files are only >> available in the -dev package, because then ‘dynamic-link’ won’t work >> unless that -dev package is installed (as recently discussed on >> guile-user.) > > I have the feeling that we should implement our own dynamic-link > function without libltdl. It would eliminate a dependency and allow us > to use other search path rules, like ones that could deal with this > case. I think the situation would actually be better on other > architectures because we wouldn't have to deal with bugs like this one: > > http://thread.gmane.org/gmane.lisp.guile.bugs/5269 The problems we're having with libltdl are likely affecting many other projects. Wouldn't it be better to fix these problems in libltdl, to the benefit of all its users, than for each of its users to duplicate its functionality within their own projects? More generally, I'm concerned with the direction we are being pressured into by those who complain about the number of dependencies. We ought to look for better solutions than duplicating library functionality within Guile's own source code. Imagine if every program did that. That way lies madness. IMO, we ought to look for better solutions for those who complain about dependencies. One idea is to provide precompiled versions of Guile for the major platforms (i.e. MinGW, MacOS and possibly also GNU/Linux) with all dependencies included, for use by libguile-based projects that wish to provide precompiled bundles for their users. It might also make sense to provide something along the lines of jhbuild to make the build job easier for those who want more flexibility. What do you think? Mark ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 17:50 ` Mark H Weaver @ 2013-02-09 20:44 ` Noah Lavine 2013-02-09 21:53 ` Ludovic Courtès 2013-02-11 8:20 ` Andy Wingo 2 siblings, 0 replies; 35+ messages in thread From: Noah Lavine @ 2013-02-09 20:44 UTC (permalink / raw) To: Mark H Weaver; +Cc: Andy Wingo, Ludovic Courtès, guile-devel [-- Attachment #1: Type: text/plain, Size: 2474 bytes --] Mark, I agree with everything you said about dependencies. I think the real solution is something like what you said - sharing code, but bundling. One way to push that farther would be to distribute tarballs that include the complete source of some libraries, and somehow making a combined build system that configures and builds all of them. I would nominate libgc for this, since we keep hitting trouble with new or old libgc versions. Noah On Sat, Feb 9, 2013 at 12:50 PM, Mark H Weaver <mhw@netris.org> wrote: > Hi Andy, > > Andy Wingo <wingo@pobox.com> writes: > > > On Sat 09 Feb 2013 16:12, ludo@gnu.org (Ludovic Courtès) writes: > > > >> An issue with the FFI is distros where .la and .so files are only > >> available in the -dev package, because then ‘dynamic-link’ won’t work > >> unless that -dev package is installed (as recently discussed on > >> guile-user.) > > > > I have the feeling that we should implement our own dynamic-link > > function without libltdl. It would eliminate a dependency and allow us > > to use other search path rules, like ones that could deal with this > > case. I think the situation would actually be better on other > > architectures because we wouldn't have to deal with bugs like this one: > > > > http://thread.gmane.org/gmane.lisp.guile.bugs/5269 > > The problems we're having with libltdl are likely affecting many other > projects. Wouldn't it be better to fix these problems in libltdl, to > the benefit of all its users, than for each of its users to duplicate > its functionality within their own projects? > > More generally, I'm concerned with the direction we are being pressured > into by those who complain about the number of dependencies. We ought > to look for better solutions than duplicating library functionality > within Guile's own source code. Imagine if every program did that. > That way lies madness. > > IMO, we ought to look for better solutions for those who complain about > dependencies. One idea is to provide precompiled versions of Guile for > the major platforms (i.e. MinGW, MacOS and possibly also GNU/Linux) with > all dependencies included, for use by libguile-based projects that wish > to provide precompiled bundles for their users. It might also make > sense to provide something along the lines of jhbuild to make the build > job easier for those who want more flexibility. > > What do you think? > > Mark > > [-- Attachment #2: Type: text/html, Size: 3253 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 17:50 ` Mark H Weaver 2013-02-09 20:44 ` Noah Lavine @ 2013-02-09 21:53 ` Ludovic Courtès 2013-02-11 8:20 ` Andy Wingo 2 siblings, 0 replies; 35+ messages in thread From: Ludovic Courtès @ 2013-02-09 21:53 UTC (permalink / raw) To: Mark H Weaver; +Cc: Andy Wingo, guile-devel Mark H Weaver <mhw@netris.org> skribis: > Andy Wingo <wingo@pobox.com> writes: > >> On Sat 09 Feb 2013 16:12, ludo@gnu.org (Ludovic Courtès) writes: >> >>> An issue with the FFI is distros where .la and .so files are only >>> available in the -dev package, because then ‘dynamic-link’ won’t work >>> unless that -dev package is installed (as recently discussed on >>> guile-user.) >> >> I have the feeling that we should implement our own dynamic-link >> function without libltdl. It would eliminate a dependency and allow us >> to use other search path rules, like ones that could deal with this >> case. I think the situation would actually be better on other >> architectures because we wouldn't have to deal with bugs like this one: >> >> http://thread.gmane.org/gmane.lisp.guile.bugs/5269 > > The problems we're having with libltdl are likely affecting many other > projects. Wouldn't it be better to fix these problems in libltdl, Agreed. On one hand, that will take more time than rolling our own. On the other, that will save us many headaches (incompatibility with previous Guile versions, maintenance of our own stuff, proliferation of search path rules, etc.) Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 17:50 ` Mark H Weaver 2013-02-09 20:44 ` Noah Lavine 2013-02-09 21:53 ` Ludovic Courtès @ 2013-02-11 8:20 ` Andy Wingo 2013-02-11 9:15 ` Thien-Thi Nguyen 2 siblings, 1 reply; 35+ messages in thread From: Andy Wingo @ 2013-02-11 8:20 UTC (permalink / raw) To: Mark H Weaver; +Cc: Ludovic Courtès, guile-devel Howdy, On Sat 09 Feb 2013 18:50, Mark H Weaver <mhw@netris.org> writes: > Andy Wingo <wingo@pobox.com> writes: > >> I have the feeling that we should implement our own FOO function >> without libBAR. > > Wouldn't it be better to fix these problems in libBAR, to the benefit > of all its users, than for each of its users to duplicate its > functionality within their own projects? This is a nice description of the advantages of shared libraries in general, but to be fair we should list the disadvantages as well: - Coordination cost (working with upstream on bugs/features) - QA cost (does the user have a bug-free libfoo or not?) - Runtime cost (another shared library) - Extensibility cost (does using the library prevent us from making extensions to functionality in the area that the library solves?) So I think the discussion about external dependencies should be, "does this dependency pay for itself?" For libgc, gmp, libffi, and libunistring, the answer for me is "yes, definitely". For ltdl, my instinct is "no". Just MHO :) Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-11 8:20 ` Andy Wingo @ 2013-02-11 9:15 ` Thien-Thi Nguyen 0 siblings, 0 replies; 35+ messages in thread From: Thien-Thi Nguyen @ 2013-02-11 9:15 UTC (permalink / raw) To: guile-devel [-- Attachment #1: Type: text/plain, Size: 1070 bytes --] () Andy Wingo <wingo@pobox.com> () Mon, 11 Feb 2013 09:20:55 +0100 - Coordination cost (working with upstream on bugs/features) For ltdl, my instinct is "no". Just MHO :) I imagine no one likes to hear the curmudgeon spew, but i feel it is my duty (to GNU, Guile, and my fellow programmers) to trot out a reminder: Live by the snub, die by the snub. When someone applies the same instinct a few years down the line, the libltdl reimpls (multiple, one per Guile release) will most likely suffer from the same pronouncement. It will be a lot of work for everyone involved to return to the true upstream from the usurper, and that work will not be done gladly. -- Thien-Thi Nguyen ..................................... GPG key: 4C807502 . NB: ttn at glug dot org is not me . . (and has not been since 2007 or so) . . ACCEPT NO SUBSTITUTES . ........... please send technical questions to mailing lists ........... [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 17:02 ` Andy Wingo 2013-02-09 17:50 ` Mark H Weaver @ 2013-02-11 10:46 ` Mike Gran 2013-02-11 13:14 ` Ludovic Courtès 1 sibling, 1 reply; 35+ messages in thread From: Mike Gran @ 2013-02-11 10:46 UTC (permalink / raw) To: Andy Wingo, Ludovic Courtès; +Cc: guile-devel@gnu.org > I have the feeling that we should implement our own dynamic-link > function without libltdl. It would eliminate a dependency and allow us > to use other search path rules, like ones that could deal with this > case. I think the situation would actually be better on other > architectures because we wouldn't have to deal with bugs like this one: Right now, the Guile project does a poor job of testing Guile on multiple platforms. Hydra does check that i686-linux, x86_64-linux and x86_64-darwin compile, but, that's about the extent of multi-platform testing. (There are Hydra jobs for Cygwin and Solaris, but, they are broken; and FreeBSD hasn't built successfully in a year or so on 2.0) Guile has some talented hackers, and maybe they could write a better dynamic linker than libtool, but, history suggests that Guile might lose interest in maintaining such code for non-GNU systems. -Mike ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-11 10:46 ` Mike Gran @ 2013-02-11 13:14 ` Ludovic Courtès 0 siblings, 0 replies; 35+ messages in thread From: Ludovic Courtès @ 2013-02-11 13:14 UTC (permalink / raw) To: Mike Gran; +Cc: Andy Wingo, guile-devel@gnu.org Mike Gran <spk121@yahoo.com> skribis: > Right now, the Guile project does a poor job of testing Guile on > multiple platforms. Hydra does check that i686-linux, x86_64-linux > and x86_64-darwin compile, but, that's about the extent of multi-platform > testing. (There are Hydra jobs for Cygwin and Solaris, but, they are > broken; and FreeBSD hasn't built successfully in a year or so on 2.0) Actually --without-threads builds work on FreeBSD, but there’s a known problem in the tracker about threading there. I see the Darwin machines at hydra.nixos.org are currently down, I’ll ping the admins (Darwin builds have been fairly reliable over the years.) I admit that Solaris and Cygwin are more problematic, though I did some work in the past to help with those. > Guile has some talented hackers, and maybe they could write a better > dynamic linker than libtool, but, history suggests that Guile might > lose interest in maintaining such code for non-GNU systems. I tend to agree. This is typically where ltdl is supposed to help. Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-09 15:12 ` Ludovic Courtès 2013-02-09 17:02 ` Andy Wingo @ 2013-02-11 9:51 ` Nala Ginrut 2013-02-11 15:23 ` Greg Troxel 1 sibling, 1 reply; 35+ messages in thread From: Nala Ginrut @ 2013-02-11 9:51 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Andy Wingo, guile-devel On Sat, 2013-02-09 at 16:12 +0100, Ludovic Courtès wrote: > Hi, > > Daniel Hartwig <mandyke@gmail.com> skribis: > > > By the way, I very much like the conventions used in the GnuTLS > > bindings. The enums in particular make a lot of sense for a security > > library, with the extreme type safety they provide. I will pursue a > > similar approach. > > Yeah, I think it’s helpful. > > > One question. With the current state of FFI, do you think it matters > > much whether the bulk of the bindings are done in C or FFI? > > I think it depends on the amount of public C structs, enums, inlines, > and constants, and how often they are changed. When there are too many > of them and they are subject to change, it might be easier to use C > (though that can be worked around from the FFI by calling the C > compiler, as in [0].) > > My impression is that libgcrypt uses mostly opaque pointer types and has > a stable API, so the using FFI should be just fine. > > An issue with the FFI is distros where .la and .so files are only > available in the -dev package, because then ‘dynamic-link’ won’t work > unless that -dev package is installed (as recently discussed on > guile-user.)unanimous > This could be a real issue since almost all mainstream distros packaging policy force *.so be put in -devel packages. Though openSUSE/debian adds the exception for Guile, I believe it's so hard to do that for every packages uses Guile. Considering Guile would exists in every GNU project (in principle), the issue may break the packaging policy totally. @andy: But I do like to have our own dynamic-link without libltdl, which will be interesting and a study chance for me . ;-) And maybe it'll be blamed for reinventing wheels? > Thanks, > Ludo’. > > [0] http://git.sv.gnu.org/cgit/libchop.git/tree/guile2/chop/internal.scm#n130 > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-11 9:51 ` Nala Ginrut @ 2013-02-11 15:23 ` Greg Troxel 2013-02-12 1:12 ` Daniel Hartwig 2013-02-12 7:40 ` Dynamic FFI vs Static FFI (was Re: About Guile crypto support) Mark H Weaver 0 siblings, 2 replies; 35+ messages in thread From: Greg Troxel @ 2013-02-11 15:23 UTC (permalink / raw) To: Nala Ginrut; +Cc: Andy Wingo, Ludovic Courtès, guile-devel [-- Attachment #1: Type: text/plain, Size: 1329 bytes --] Nala Ginrut <nalaginrut@gmail.com> writes: > On Sat, 2013-02-09 at 16:12 +0100, Ludovic Courtès wrote: >> >> Daniel Hartwig <mandyke@gmail.com> skribis: >> An issue with the FFI is distros where .la and .so files are only >> available in the -dev package, because then ‘dynamic-link’ won’t work >> unless that -dev package is installed (as recently discussed on >> guile-user.)unanimous > > This could be a real issue since almost all mainstream distros packaging > policy force *.so be put in -devel packages. Though openSUSE/debian adds > the exception for Guile, I believe it's so hard to do that for every > packages uses Guile. > Considering Guile would exists in every GNU project (in principle), the > issue may break the packaging policy totally. (First, "all mainstream distros" is only talking about Linux.) This .so=>devel does not make sense to me. I thought the point was that -devel split things that people who wanted to compile against the package needed, but not things needed to run. So if a .so is used by a program that has been compiled, then it needs to be in the non-devel package. I would expect that .so generally belongs in the non-devel package, and that the -devel package would have .a and .h. FWIW, BSD packaging systems do not have this -devel notion [-- Attachment #2: Type: application/pgp-signature, Size: 194 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-11 15:23 ` Greg Troxel @ 2013-02-12 1:12 ` Daniel Hartwig 2013-02-12 4:20 ` Nala Ginrut 2013-02-12 7:40 ` Dynamic FFI vs Static FFI (was Re: About Guile crypto support) Mark H Weaver 1 sibling, 1 reply; 35+ messages in thread From: Daniel Hartwig @ 2013-02-12 1:12 UTC (permalink / raw) To: guile-devel On 11 February 2013 23:23, Greg Troxel <gdt@ir.bbn.com> wrote: > (First, "all mainstream distros" is only talking about Linux.) > > This .so=>devel does not make sense to me. I thought the point was > that -devel split things that people who wanted to compile against the > package needed, but not things needed to run. So if a .so is used by a > program that has been compiled, then it needs to be in the non-devel > package. I would expect that .so generally belongs in the non-devel > package, and that the -devel package would have .a and .h. > > FWIW, BSD packaging systems do not have this -devel notion [Assuming a Debian-centric view.] To be clear, the “.so” files shipped in -dev packages are just symlinks. The real “.so.X.Y” are shipped in the corresponding library package, as makes sense. Nala Ginrut wrote earlier: > This could be a real issue since almost all mainstream distros packaging > policy force *.so be put in -devel packages. Though openSUSE/debian adds > the exception for Guile, I believe it's so hard to do that for every > packages uses Guile. What do you mean, “adds the exception for Guile”? The guile-2.0-dev package contains the same /symlink/ as other -dev packages do. The real .so is in guile-2.0-libs. I do not see how that is different to any other library/dev package pair. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-12 1:12 ` Daniel Hartwig @ 2013-02-12 4:20 ` Nala Ginrut 2013-02-12 5:21 ` Daniel Hartwig 0 siblings, 1 reply; 35+ messages in thread From: Nala Ginrut @ 2013-02-12 4:20 UTC (permalink / raw) To: Daniel Hartwig; +Cc: guile-devel [-- Attachment #1: Type: text/plain, Size: 1681 bytes --] 在 2013-2-12 AM10:10,"Daniel Hartwig" <mandyke@gmail.com>写道: > > On 11 February 2013 23:23, Greg Troxel <gdt@ir.bbn.com> wrote: > > (First, "all mainstream distros" is only talking about Linux.) > > > > This .so=>devel does not make sense to me. I thought the point was > > that -devel split things that people who wanted to compile against the > > package needed, but not things needed to run. So if a .so is used by a > > program that has been compiled, then it needs to be in the non-devel > > package. I would expect that .so generally belongs in the non-devel > > package, and that the -devel package would have .a and .h. > > > > FWIW, BSD packaging systems do not have this -devel notion > > [Assuming a Debian-centric view.] > > To be clear, the “.so” files shipped in -dev packages are just > symlinks. The real “.so.X.Y” are shipped in the corresponding library > package, as makes sense. > Yes, I'm talking about this *.so link. Not .so.X.Y > Nala Ginrut wrote earlier: > > This could be a real issue since almost all mainstream distros packaging > > policy force *.so be put in -devel packages. Though openSUSE/debian adds > > the exception for Guile, I believe it's so hard to do that for every > > packages uses Guile. > > What do you mean, “adds the exception for Guile”? Put that link .so in guile rather than guile-devel is the exception I mentioned. The regular packaging policy not allow it. The guile-2.0-dev > package contains the same /symlink/ as other -dev packages do. The real > .so is in guile-2.0-libs. I do not see how that is different to any > other library/dev package pair. > [-- Attachment #2: Type: text/html, Size: 2143 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: About Guile crypto support 2013-02-12 4:20 ` Nala Ginrut @ 2013-02-12 5:21 ` Daniel Hartwig 0 siblings, 0 replies; 35+ messages in thread From: Daniel Hartwig @ 2013-02-12 5:21 UTC (permalink / raw) To: guile-devel On 12 February 2013 12:20, Nala Ginrut <nalaginrut@gmail.com> wrote: > Put that link .so in guile rather than guile-devel is the exception I > mentioned. The regular packaging policy not allow it. > [Again, referring only to Debian.] Right. This applies only to libguilereadline-v-18.so, not libguile-2.0.so. I had overlooked the former. Debian policy explicitly says that packaging like this is allowed, as some libraries and dynamic modules require it in their typical use. It is true that this would be a /minor/ issue for a pure FFI approach, as libgcrypt.so would not be available without the -dev package. In this case, the binary package for the /Guile module/ just depends on libgcrypt-dev, no problem. Anyway, to use FFI, extension, or a hybrid approach is a decision for whoever actually begins to write these proper bindings. Regards ^ permalink raw reply [flat|nested] 35+ messages in thread
* Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-11 15:23 ` Greg Troxel 2013-02-12 1:12 ` Daniel Hartwig @ 2013-02-12 7:40 ` Mark H Weaver 2013-02-12 13:52 ` Ludovic Courtès 1 sibling, 1 reply; 35+ messages in thread From: Mark H Weaver @ 2013-02-12 7:40 UTC (permalink / raw) To: Greg Troxel; +Cc: Andy Wingo, Ludovic Courtès, guile-devel Greg Troxel <gdt@ir.bbn.com> writes: > This .so=>devel does not make sense to me. I thought the point was > that -devel split things that people who wanted to compile against the > package needed, but not things needed to run. It seems to me that the dynamic FFI performs, at run time, the same jobs that a C compiler performs at compile time. If at some point we add support for accessing preprocessor macros and type definitions (which seems important), then we'll need the header files as well. So it makes sense to me that a full-featured dynamic FFI fundamentally depends on information that's only available in the *-dev packages. At some point, it might make sense to create a more static FFI that works more like a C compiler does, splitting the job into compile-time and run-time phases. This static FFI would be strictly less powerful than the dynamic FFI, in a similar sense to how syntactic record APIs are less powerful than procedural ones. However, the static FFI would be sufficient in most cases, and would have some advantages. Thoughts? Mark ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-12 7:40 ` Dynamic FFI vs Static FFI (was Re: About Guile crypto support) Mark H Weaver @ 2013-02-12 13:52 ` Ludovic Courtès 2013-02-12 18:24 ` Mark H Weaver 0 siblings, 1 reply; 35+ messages in thread From: Ludovic Courtès @ 2013-02-12 13:52 UTC (permalink / raw) To: Mark H Weaver; +Cc: Andy Wingo, guile-devel, Greg Troxel Mark H Weaver <mhw@netris.org> skribis: > It seems to me that the dynamic FFI performs, at run time, the same jobs > that a C compiler performs at compile time. If at some point we add > support for accessing preprocessor macros and type definitions (which > seems important), then we'll need the header files as well. So it makes > sense to me that a full-featured dynamic FFI fundamentally depends on > information that's only available in the *-dev packages. I don’t think you would parse header files at run-time. I’d rather do this at macro expansion time. Overall, I think it’s good to pay attention to what popular distros do, while at the same time keeping in mind that we’re not bound by their policies, and could very well come up with use cases that are hindered by these policies. > At some point, it might make sense to create a more static FFI that > works more like a C compiler does, splitting the job into compile-time > and run-time phases. This static FFI would be strictly less powerful > than the dynamic FFI, in a similar sense to how syntactic record APIs > are less powerful than procedural ones. However, the static FFI would > be sufficient in most cases, and would have some advantages. In my mind the “static FFI” is the C API, and the dynamic FFI is (system foreign). To me, the main advantage of the latter is its simplicity of use and deployment. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-12 13:52 ` Ludovic Courtès @ 2013-02-12 18:24 ` Mark H Weaver 2013-02-12 21:49 ` Ludovic Courtès 2013-02-14 7:21 ` William ML Leslie 0 siblings, 2 replies; 35+ messages in thread From: Mark H Weaver @ 2013-02-12 18:24 UTC (permalink / raw) To: Ludovic Courtès; +Cc: Andy Wingo, guile-devel, Greg Troxel ludo@gnu.org (Ludovic Courtès) writes: > Mark H Weaver <mhw@netris.org> skribis: > >> At some point, it might make sense to create a more static FFI that >> works more like a C compiler does, splitting the job into compile-time >> and run-time phases. This static FFI would be strictly less powerful >> than the dynamic FFI, in a similar sense to how syntactic record APIs >> are less powerful than procedural ones. However, the static FFI would >> be sufficient in most cases, and would have some advantages. > > In my mind the “static FFI” is the C API, and the dynamic FFI is > (system foreign). > > To me, the main advantage of the latter is its simplicity of use and > deployment. Okay, but here I'm using "Static FFI" to mean something very different than the C API: I'm talking about a pure scheme-based API that would be quite similar to the API our current dynamic FFI, except that a lot of the work would be done at compilation time (probably during macro expansion). I don't care what terminology we use to describe it, but that's the idea that I intended to start a discussion about. Mark ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-12 18:24 ` Mark H Weaver @ 2013-02-12 21:49 ` Ludovic Courtès 2013-02-14 7:21 ` William ML Leslie 1 sibling, 0 replies; 35+ messages in thread From: Ludovic Courtès @ 2013-02-12 21:49 UTC (permalink / raw) To: Mark H Weaver; +Cc: Andy Wingo, guile-devel, Greg Troxel Mark H Weaver <mhw@netris.org> skribis: > ludo@gnu.org (Ludovic Courtès) writes: > >> Mark H Weaver <mhw@netris.org> skribis: >> >>> At some point, it might make sense to create a more static FFI that >>> works more like a C compiler does, splitting the job into compile-time >>> and run-time phases. This static FFI would be strictly less powerful >>> than the dynamic FFI, in a similar sense to how syntactic record APIs >>> are less powerful than procedural ones. However, the static FFI would >>> be sufficient in most cases, and would have some advantages. >> >> In my mind the “static FFI” is the C API, and the dynamic FFI is >> (system foreign). >> >> To me, the main advantage of the latter is its simplicity of use and >> deployment. > > Okay, but here I'm using "Static FFI" to mean something very different > than the C API: I'm talking about a pure scheme-based API that would be > quite similar to the API our current dynamic FFI, except that a lot of > the work would be done at compilation time (probably during macro > expansion). Ah, OK, sorry for the confusion! Ludo’. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-12 18:24 ` Mark H Weaver 2013-02-12 21:49 ` Ludovic Courtès @ 2013-02-14 7:21 ` William ML Leslie 2013-02-15 13:34 ` Nala Ginrut 1 sibling, 1 reply; 35+ messages in thread From: William ML Leslie @ 2013-02-14 7:21 UTC (permalink / raw) To: guile-devel On 13 February 2013 05:24, Mark H Weaver <mhw@netris.org> wrote: > Okay, but here I'm using "Static FFI" to mean something very different > than the C API: I'm talking about a pure scheme-based API that would be > quite similar to the API our current dynamic FFI, except that a lot of > the work would be done at compilation time (probably during macro > expansion). Maybe even something like LuaJIT FFI or python's CFFI - that can parse C code at compile time to produce the data structures for the dynamic FFI? -- William Leslie ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: Dynamic FFI vs Static FFI (was Re: About Guile crypto support) 2013-02-14 7:21 ` William ML Leslie @ 2013-02-15 13:34 ` Nala Ginrut 0 siblings, 0 replies; 35+ messages in thread From: Nala Ginrut @ 2013-02-15 13:34 UTC (permalink / raw) To: William ML Leslie; +Cc: guile-devel On Thu, 2013-02-14 at 18:21 +1100, William ML Leslie wrote: > On 13 February 2013 05:24, Mark H Weaver <mhw@netris.org> wrote: > > Okay, but here I'm using "Static FFI" to mean something very different > > than the C API: I'm talking about a pure scheme-based API that would be > > quite similar to the API our current dynamic FFI, except that a lot of > > the work would be done at compilation time (probably during macro > > expansion). > > Maybe even something like LuaJIT FFI or python's CFFI - that can parse > C code at compile time to produce the data structures for the dynamic > FFI? > I think that would be better. The reason why I don't use FFI is that we lack of convenient C struct parsing mechanism. Though it's not so hard to implement, designing proper APIs maybe take sometime. Anyway, I'd like to see a prototype, or maybe I could provide a naive one. ;-) ^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2013-02-15 13:34 UTC | newest] Thread overview: 35+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-02-03 12:55 About Guile crypto support Nala Ginrut 2013-02-03 15:37 ` Thien-Thi Nguyen 2013-02-04 1:14 ` Daniel Hartwig 2013-02-04 3:12 ` Nala Ginrut 2013-02-04 3:35 ` Daniel Hartwig 2013-02-04 4:15 ` Nala Ginrut 2013-02-04 23:03 ` Ludovic Courtès 2013-02-05 2:43 ` Nala Ginrut 2013-02-05 2:57 ` Noah Lavine 2013-02-06 13:58 ` Nala Ginrut 2013-02-05 15:48 ` Ludovic Courtès 2013-02-06 4:18 ` Daniel Hartwig 2013-02-06 4:28 ` Daniel Hartwig 2013-02-08 16:21 ` Ludovic Courtès 2013-02-09 1:37 ` Daniel Hartwig 2013-02-09 15:12 ` Ludovic Courtès 2013-02-09 17:02 ` Andy Wingo 2013-02-09 17:50 ` Mark H Weaver 2013-02-09 20:44 ` Noah Lavine 2013-02-09 21:53 ` Ludovic Courtès 2013-02-11 8:20 ` Andy Wingo 2013-02-11 9:15 ` Thien-Thi Nguyen 2013-02-11 10:46 ` Mike Gran 2013-02-11 13:14 ` Ludovic Courtès 2013-02-11 9:51 ` Nala Ginrut 2013-02-11 15:23 ` Greg Troxel 2013-02-12 1:12 ` Daniel Hartwig 2013-02-12 4:20 ` Nala Ginrut 2013-02-12 5:21 ` Daniel Hartwig 2013-02-12 7:40 ` Dynamic FFI vs Static FFI (was Re: About Guile crypto support) Mark H Weaver 2013-02-12 13:52 ` Ludovic Courtès 2013-02-12 18:24 ` Mark H Weaver 2013-02-12 21:49 ` Ludovic Courtès 2013-02-14 7:21 ` William ML Leslie 2013-02-15 13:34 ` Nala Ginrut
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).