Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-11 Thread Daniel Trstenjak

Hi Wren,

 Incidentally, if we really want to pursue the get rid of CPP by
 building it into the GHC distro...
 
 In recent years there've been a number of papers on variational
 lambda-calculi[1] which essentially serve to embed flag-based
 preprocessor conditionals directly into the language itself. One major
 benefit of this approach is that the compiler can then typecheck *all*
 variations of the code, rather than only checking whichever particular
 variation we happen to be compiling at the time. This is extremely
 useful for avoiding bitrot in the preprocessor conditionals.
 
 ...If we were to try and obviate the dependency on CPP, variational
 typing seems like a far more solid approach than simply reinventing
 the preprocessing wheel yet again. (The downside, of course, is making
 the Haskell spec significantly more complex.)

I think even more beneficial than type checking all cases is the
easier support for any Haskell tooling operating with the Haskell source
if all cases are part of the AST.


Greetings,
Daniel
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-09 Thread Brandon Allbery
On Fri, May 8, 2015 at 7:56 PM, Brandon Allbery allber...@gmail.com wrote:

 On Fri, May 8, 2015 at 7:40 PM, Donn Cave d...@avvanta.com wrote:

 But fatal if compilation is conditional on something that affects the
 ability to type check, am I right?  Such as different compilers or
 versions of same compiler.


 Not per the abstract (paper itself seems to be paywalled). They had an
 earlier work with that issue, the linked one is about how to be robust in
 the face of such conditionals.


There's also the question about handling changes in syntax, e.g. LambdaCase
throws parse errors in older compilers.

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Malcolm Wallace
Exactly.  My post was an attempt to elicit response from anyone to whom it 
matters.  There is no point in worrying about hypothetical licensing problems - 
let's hear about the real ones.

Regards,
Malcolm

On 7 May 2015, at 22:15, Tomas Carnecky wrote:

 That doesn't mean those people don't exist. Maybe they do but are too afraid 
 to speak up (due to corporate policy or whatever).
 
 On Thu, May 7, 2015 at 10:41 PM, Malcolm Wallace malcolm.wall...@me.com 
 wrote:
 I also note that in this discussion, so far not a single person has said that 
 the cpphs licence would actually be a problem for them.
 
 Regards,
 Malcolm
 
 On 7 May 2015, at 20:54, Herbert Valerio Riedel wrote:
 
  On 2015-05-06 at 13:38:16 +0200, Jan Stolarek wrote:
 
  [...]
 
  Regarding licensing issues: perhaps we should simply ask Malcolm
  Wallace if he would consider changing the license for the sake of GHC?
  Or perhaps he could grant a custom-tailored license to the GHC
  project? After all, the project page [1] says:  If that's a problem
  for you, contact me to make other arrangements.
 
  Fyi, Neil talked to him[1]:
 
  | I talked to Malcolm. His contention is that it doesn't actually change
  | the license of the ghc package. As such, it's just a single extra
  | license to add to a directory full of licenses, which is no big deal.
 
 
  [1]: 
  http://www.reddit.com/r/haskell/comments/351pur/rfc_native_xcpp_for_ghc_proposal/cr1e5n3
 
 ___
 Haskell-Cafe mailing list
 haskell-c...@haskell.org
 http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
 

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Malcolm Wallace

On 8 May 2015, at 00:06, Richard A. O'Keefe wrote:

 I think it's important that there be *one*
 cpp used by Haskell.  fpp is under 4 kSLOC
 of C, and surely Haskell can do a lot better.

FWIW, cpphs is about 1600 LoC today.

Regards,
Malcolm
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Christian Maeder
Hi,

using cpphs is the right way to go!

Rewriting it from scratch may be a good exercise but is (essentially) a
waste of time.

However, always asking Malcolm to get source changes into cpphs would be
annoying.

Therefore it would be great if the sources were just part of the ghc
sources (under git).

Another problem might be the dependency polyparse that is currently
not part of the core libraries.

(I guess that replacing polyparse by something else would also be a nice
exercise.)

So (for me) the only question is, if Malcolm is willing to transfer
control over cpphs to the haskell-community (or ghc head) - of course
with due acknowledgements!

Cheers Christian

On 08.05.2015 08:07, Malcolm Wallace wrote:
 
 On 8 May 2015, at 00:06, Richard A. O'Keefe wrote:
 
 I think it's important that there be *one*
 cpp used by Haskell.  fpp is under 4 kSLOC
 of C, and surely Haskell can do a lot better.
 
 FWIW, cpphs is about 1600 LoC today.
 
 Regards,
 Malcolm
 

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Mathieu Boespflug
[Gah, wrong From: email address given the list subscriptions, sorry
for the duplicates.]

I'm unclear why cpphs needs to be made a dependency of the GHC API and
included as a lib. Could you elaborate? (in the wiki page possibly)

Currently, GHC uses the system preprocessor, as a separate process.
Couldn't we for GHC 7.12 keep to exactly that, save for the fact that
by default GHC would call the cpphs binary for preprocessing, and have
the cpphs binary be available in GHC's install dir somewhere?

fork()/execvce() is cheap. Certainly cheaper than the cost of
compiling a single Haskell module. Can't we keep to this
separate-(and-pluggable)-preprocessor-executable scheme? We'd sidestep
most license tainting concerns that way.


On 8 May 2015 at 11:39, Herbert Valerio Riedel hvrie...@gmail.com wrote:
 Hello,

 On 2015-05-08 at 11:28:08 +0200, Niklas Larsson wrote:
 If the intention is to use cpphs as a library, won't the license
 affect every program built with the GHC API? That seems to be a high
 price to pay.

 Yes, every program linking the `ghc` package would be affected by
 LGPL+SLE albeit in a contained way, as it's mentioned on the Wiki page:

 | - As a practical consequence of the //LGPL with static-linking-exception//
 |   (LGPL+SLE), **if no modifications are made to the `cpphs`-parts**
 |   (i.e. the LGPL+SLE covered modules) of the GHC code-base,
 |   **then there is no requirement to ship (or make available) any source 
 code**
 |   together with the binaries, even if other parts of the GHC code-base
 |   were modified.

 However, don't forget we already have this issue w/ integer-gmp, and
 with that the LGPL is in full effect (i.e. w/o a static-linkage-exception!)

 In that context, the suggestion was made[1] to handle the cpphs-code
 like the GMP code, i.e. allow a compile-time configuration in the GHC
 build-system to build a cpphs-free (and/or GMP-free) GHC for those
 parties that need to avoid any LGPL-ish code whatsoever in their
 toolchain.

 Would that address this concern?


  [1]: 
 http://www.reddit.com/r/haskell/comments/351pur/rfc_native_xcpp_for_ghc_proposal/cr1cdhb
 ___
 Haskell-Cafe mailing list
 haskell-c...@haskell.org
 http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Dan Doel
vector generates a considerable amount of code using CPP macros.

And with regard to other mails, I'm not too eager (personally) to port that
to template Haskell, even though I'm no fan of CPP. The code generation
being done is so dumb that CPP is pretty much perfect for it, and TH would
probably just be more work (and it's certainly more work to write it again
now that it's already written).

On Wed, May 6, 2015 at 10:21 AM, Bardur Arantsson s...@scientician.net
wrote:

 On 06-05-2015 15:05, Alan  Kim Zimmerman wrote:
  Perhaps it makes sense to scan hackage to find all the different CPP
 idioms
  that are actually used in Haskell code, if it is a small/well-defined set
  it may be worth writing a simple custom preprocessor.
 

 +1, I'll wager that the vast majority of usages are just for version
 range checks.

 If there are packages that require more, they could just keep using the
 system-cpp or, I, guess cpphs if it gets baked into GHC. Like you, I'd
 want to see real evidence that that's actually worth the
 effort/complication.

 Regards,

 ___
 Haskell-Cafe mailing list
 haskell-c...@haskell.org
 http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread wren romano
On Fri, May 8, 2015 at 12:12 PM, Dan Doel dan.d...@gmail.com wrote:
 vector generates a considerable amount of code using CPP macros.

 And with regard to other mails, I'm not too eager (personally) to port that
 to template Haskell, even though I'm no fan of CPP. The code generation
 being done is so dumb that CPP is pretty much perfect for it, and TH would
 probably just be more work (and it's certainly more work to write it again
 now that it's already written).

Incidentally, if we really want to pursue the get rid of CPP by
building it into the GHC distro...

In recent years there've been a number of papers on variational
lambda-calculi[1] which essentially serve to embed flag-based
preprocessor conditionals directly into the language itself. One major
benefit of this approach is that the compiler can then typecheck *all*
variations of the code, rather than only checking whichever particular
variation we happen to be compiling at the time. This is extremely
useful for avoiding bitrot in the preprocessor conditionals.

...If we were to try and obviate the dependency on CPP, variational
typing seems like a far more solid approach than simply reinventing
the preprocessing wheel yet again. (The downside, of course, is making
the Haskell spec significantly more complex.)


[1] e.g., http://dl.acm.org/citation.cfm?doid=2398856.2364535

-- 
Live well,
~wren
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-08 Thread Brandon Allbery
On Fri, May 8, 2015 at 7:40 PM, Donn Cave d...@avvanta.com wrote:

 But fatal if compilation is conditional on something that affects the
 ability to type check, am I right?  Such as different compilers or
 versions of same compiler.


Not per the abstract (paper itself seems to be paywalled). They had an
earlier work with that issue, the linked one is about how to be robust in
the face of such conditionals.

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-07 Thread wren romano
On Wed, May 6, 2015 at 9:05 AM, Alan  Kim Zimmerman
alan.z...@gmail.com wrote:
 Perhaps it makes sense to scan hackage to find all the different CPP idioms
 that are actually used in Haskell code, if it is a small/well-defined set it
 may be worth writing a simple custom preprocessor.

Conditional imports are far and away the most commonly used idiom.
Second most common, I'd say, is specifying GHC-specific vs
compiler-generic implementations of top-level functions (e.g., using
GHC.Exts.build or not). For both of these it's sufficient to have the
#if construction plus everything needed for the conditional
expressions.

However, while the #if construction covers the vast majority of use
cases, it doesn't cover all of them. Macros are also important. For
example, a number of low-level libraries will use macros for things
like having assertions which are either compiled as runtime checks, or
as nothing, depending on a Cabal flag. Of course, there are plenty of
other places where we want to use macros in low-level code, either to
force inlining, or to have conditional compilation of (non-top-level)
expressions that show up over and over. That these idioms aren't more
common is just because there aren't more people working on such
low-level code.

In theory TH should be able to handle this stuff, but TH is a verbose
sledgehammer for these sorts of problems, and using TH means
restricting yourself to being GHC-only.

-- 
Live well,
~wren
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-06 Thread Sven Panne
2015-05-06 16:21 GMT+02:00 Bardur Arantsson s...@scientician.net:
 +1, I'll wager that the vast majority of usages are just for version
 range checks.

The OpenGL-related packages used macros to generate some binding magic
(a foreign import plus some helper functions for each API entry),
not just range checks. I had serious trouble when Apple switched to
clang, so as a quick fix, the macro-expanded (via GCC's CPP) sources
had been checked in. :-P Nowadays the binding is generated from the
OpenGL XML registry file, so this is not an issue anymore.

 If there are packages that require more, they could just keep using the
 system-cpp or, I, guess cpphs if it gets baked into GHC. Like you, I'd
 want to see real evidence that that's actually worth the
 effort/complication.

Simply relying on the system CPP doesn't work due to the various
differences between GCC's CPP and the one from clang, see e.g.
https://github.com/haskell-opengl/OpenGLRaw/issues/18#issuecomment-31428380.
Ignoring the problem doesn't make it go away... ;-)

Note that we still need CPP to handle the various calling conventions
on the different platforms when the FFI is used, so it's not only
range checks, see e.g.
https://github.com/haskell-opengl/OpenGLRaw/blob/master/OpenGLRaw.cabal#L588.
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users


Re: [Haskell-cafe] RFC: Native -XCPP Proposal

2015-05-06 Thread Brandon Allbery
On Wed, May 6, 2015 at 10:59 AM, Bardur Arantsson s...@scientician.net
wrote:

 (I'm not going to be doing any of the work, so this is just armchairing,
 but this seems like an 80/20 solution would be warranted.)


Only if you're convinced it will remain 80/20 for the foreseeable future. I
do not want to bet on Linux always being gcc (and dislike the One True
Platform-ism that line of thought encourages).

-- 
brandon s allbery kf8nh   sine nomine associates
allber...@gmail.com  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonadhttp://sinenomine.net
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users