Re: Recompile with -fPIC (was building a patched ghc)

2011-02-19 Thread scooter . phd
You've got an object file compiled with 32-bit code, hence the relocation 
error. fPIC won't help you much (the linker error isn't helpful.) It's a matter 
of sifting through the make output to find the file or files that aren't 
compiled in 64-bit mode.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: José Pedro Magalhães j...@cs.uu.nl
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Fri, 18 Feb 2011 11:34:03 
To: GHC usersglasgow-haskell-users@haskell.org
Cc: braverdelivera...@gmail.com
Subject: Recompile with -fPIC (was building a patched ghc)

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

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


Re: Release/git plans

2011-01-21 Thread scooter . phd
Llvm is also a good reference for compiler plugin design; it would appear that 
Scala borrowed from their approach.


-scooter
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: austin seipp a...@hacks.yi.org
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Fri, 21 Jan 2011 17:59:32 
To: Simon Peyton-Jonessimo...@microsoft.com
Cc: Simon Marlowmarlo...@gmail.com; 
glasgow-haskell-users@haskell.orgglasgow-haskell-users@haskell.org
Subject: Re: Release/git plans

Simon,

On Fri, Jan 21, 2011 at 3:13 AM, Simon Peyton-Jones
simo...@microsoft.com wrote:
 Austin

 | So, given that 7.2 will be released much earlier than the normal
 | release cycle, is there any room for anything else to get into HEAD
 | for the 7.2 release before everything is switched? In particular I
 | fixed up Max Bolingbroke's old compiler plugin work to be usable with
 | the latest HEAD, and all the fundamental work is there and done, just
 | some additional small things are needed (notably having ghc dump
 | plugin information a la -ddump flags, and testsuite patches are about
 | it I think.) The patch itself is pretty small and doesn't touch *too*
 | much code, mostly adding dynamic loading and the plugin API, but it's
 | arguably adding a 'big' feature for users of GHC to start utilizing,
 | and perhaps a release in 7.2 would cause problems merging changes
 | until you cut a new STABLE branch with git, like you said.

 I'm sorry I've been slow on this.  Review and apply the plugins patch is in 
 my inbox, but it's been queued up behind too many other things, notably 
 making the new typechecker work.

That's fine! One thing at a time. The typechecker overhaul is great
IMO, and I've noticed it's fixed many strange GHC bugs relating to
type system feature interactions (including a few I hit.) Much
appreciated work!

 I'm pretty keen on the whole plugin idea, because it makes the compiler more 
 extensible and lowers the barrier to entry.  My only reason for delay is that 
 I wanted to review the design (as seen by a plug-in author).  Once we provide 
 it, we have to support it, and it's harder to change.

This is very reasonable and I was going to mention it once someone
responded. Up to this point, Max has really been the main person to
write any plugins for GHC using the current interface. I would really
welcome anybody interested in hacking on GHC look at the current API
in the patch - my main concern up to this point is that the actual
means of installing passes into the Core pipeline, the installation
function of type `[CoreToDo] - CoreM [CoreToDo]`, is a little
fragile.

Scala's approach seems to be to have plugins specify 'runAfter' and
'runBefore' constraints, which specify what compiler phases should run
before and after the plugin's pass in question (and certain phases may
run multiple times, so as a consequence, so does your plugin.) If I
remember correctly, this was somewhat similar to the original design
Max proposed which was to specify in which phase the pass is run, and
it essentially amounted to a phase constraint. Perhaps Max can
elaborate on why this design was rejected in favor of the current one,
so we can see how and where it falls down, and what we really want.

Thomas pointed out the Scala compiler plugin design document, so I'll
be sure to read over it this weekend when I get the chance to cook up
ideas.

Also worth noting, like I said, is I would inevitably like to extend
compiler plugins to work on Cmm, once the new codegen (using hoopl)
hits. Maybe even allow you to write a new backend ultimately if you
wanted to, although I'd call that the last and ultimate challenge at
this point (because from my cursory glances, it would require quite a
bit of re-engineering and re-design of the driver and compilation
pipeline, much more so than just the Core plugins did or Cmm plugins
might. That's a bit more time than I have... at the moment ;)

To accumulate ideas and comments I've spent the past few days writing
up a wiki page (mostly written in the wee hours of the morning no
less), documenting the current API, how it might be improved, and
future work like C-- plugins or plugins implementing new backends.
Most of it is half baked. And half-written. Probably grammatical
errors and run-on sentences. Incomplete sections. Likely with big,
stupid ideas. Caveat emptor, etc.

The wiki page in all its (horrid, half-written and mangled) glory can
be located here:

http://hackage.haskell.org/trac/ghc/wiki/NewPlugins

If people can comment and add ideas, it will be much easier to
determine if this should go into 7.2.1. If the current API is too
fragile or needs to be expanded, it would likely be best to back out
and do some work, and try again for 7.4.1. That will also give a much
bigger window for feedback and testing, since 7.2 will be on a much
shorter cycle it seems.

I'll probably end up throwing up a RFC on both glasgow-haskell-users
and cvs-ghc sometime in the next week to get feedback after 

Re: RFC: migrating to git

2011-01-10 Thread scooter . phd
I'm not sure if your statement regarding the decoupling between contributors 
and VCSes holds water. The VCS is definitely a factor, but certainly not the 
only one. I've been demotivated by VCSes before and it has directly impacted 
whether I continued my involvement. Granted that the VCS was SCCS, but still...

Sample size of one, not the basis for a system of government and statements 
regarding watery bints lying in ponds apply.


-scooter
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Manuel M T Chakravarty c...@cse.unsw.edu.au
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Tue, 11 Jan 2011 15:01:43 
To: GHCcvs-...@haskell.org; GHC Listglasgow-haskell-users@haskell.org
Cc: Simon Marlowmarlo...@gmail.com
Subject: Re: RFC: migrating to git

I agree with Roman's position.  I would prefer to stay with darcs (it has its 
advantages and disadvantages, but has definitely been improving much in the 
past).

In any case, all of GHC including all dependencies must be available and 
patchable with a *single* VCS.  Mixing VCS' will lead to madness.

Manuel

PS: This talk about contributing to a project if it changes its VCS seems a bit 
lame to me.  You contribute to a project in a serious way because you care 
about the project and because you need whatever improvements you are 
implementing, not because you like the VCS.


Roman Leshchinskiy:
 On 10/01/2011, at 13:27, Simon Marlow wrote:
 
 On 10/01/2011 13:02, Max Bolingbroke wrote:
 However, I remember the last time this came up there were some issues
 that might make migration painful. From the top of my head:
 
 1) Some people expressed concern that they would have to use two
 revision control systems to work on GHC, because not all GHC
 dependencies would be git-based.
 
 It would be a prerequisite to switching that a GHC developer only has to use 
 one VCS.  So we either migrate dependencies to git, or mirror them in 
 GHC-specific git branches.
 
 I'm not sure how that is going to work. It might well be possible to build 
 GHC using only git. But most GHC developers also contribute to various 
 libraries which are often quite intimately linked to GHC. In particular, GHC 
 patches are often accompanied by library patches. Unless all those libraries 
 switch to git, too, we'll have to use both git and darcs which would be 
 *really* annoying.
 
 Personally, I rather dislike git, mostly for the reasons that Malcolm already 
 mentioned. Compared to darcs, it seems to get in the way much too often. It 
 also seems to make finding buggy patches rather hard. But maybe I just don't 
 know how to use it properly. In any case, a switch to git wouldn't deter me 
 from contributing to GHC, but neither would a switch to any other VCS. I 
 would certainly swear more often while developing, though.
 
 Roman
 
 
 
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


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


Re: Implementation of Scalable Event Handling for GHC

2010-11-22 Thread scooter . phd
Depends on what your kernel supports. But that's just infrastructure, so 
(theoretically) it should just be invisible to the Haskell runtime user.

Surprised that the RT wasn't using the more advanced interfaces. Web servers 
have been using them for years; that's why they exist.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: tsuraan tsur...@gmail.com
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Mon, 22 Nov 2010 22:42:27 
To: Don Stewartd...@galois.com
Cc: glasgow-haskell-users@haskell.org
Subject: Re: Implementation of Scalable Event Handling for GHC

 It was integrated in GHC 7, released earlier this month.

    http://article.gmane.org/gmane.comp.lang.haskell.general/18297

     On POSIX platforms, there is a new I/O manager based on
      epoll/kqueue/poll, which allows multithreaded I/O code to scale to
      a much larger number (100k+) of threads

 -- Don

Ok, thanks!  Are there any caveats to know about, or any documentation
on the new manager?  Is it safe to assume that so long as I'm using
the standard threading and network/io libraries, I'll be using it
correctly?
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Using the GHC API: pretty printing with qualified names

2010-11-18 Thread scooter . phd
Claus:

Respectfully, No duh! as schoolkids here in the US like to say when someone 
points out the obvious to them.

And impossible is the right word since the predicate evaluates to a boolean. 
Since false is the outcome, impossible refers correctly to the status of 
fetching the documentation.

Yes, we've been looking at the GHC sources. Why else would the question be 
posed with regard to is there a better way of doing this? Personally, I've 
had my fun re-implementing cabal package reading, and recreating someone else's 
work is counterproductive.


-scooter
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Claus Reinke claus.rei...@talk21.com
Date: Thu, 18 Nov 2010 10:53:05 
To: scooter@gmail.com; glasgow-haskell-users@haskell.org
Subject: Re: Using the GHC API: pretty printing with qualified names

 scion-server mimics a GHCi command line, of sorts. scion-server 
 is used very successfully to syntax-highlight the Eclipse editor, 
 show a source's outline, provide type information when hovering 
 over a name, and provide completions.

 That's not the problem, per se. Let's say I'm hovering over a 
 function that's imported by Data.Map. When resolved, the 
 symbols appear to come from Ghc.Map (if memory serves 
 correctly), which makes finding the correct haddock impossible.

Impossible is such an ugly word;-)

The problem you encounter is that the GHC API is still, to a 
large part, just an open window into what happens to be 
in GHC. Since GHC's aims as a compiler differ from those 
of IDEs, its exposed functionality will sometimes be too 
limited to serve your purposes (eg, if GHC knows where
a function is defined, it doesn't need to know how it was
imported, once it gets past error reporting). 

If you tie yourself too closely to GHC's view, some things 
you'd like to do in an IDE will _appear_ to be impossible. 
That is why I recommend looking into the GHCi sources, 
because GHCi's needs are closer to those of an IDE.

I assume you mean things like Data.List.map being a 
re-exported GHC.List.map being a re-exported GHC.Base.map, 
and :info not knowing about  the intended abstractions:

Prelude :i map
map :: (a - b) - [a] - [b]   -- Defined in GHC.Base

You can actually get information about possible import 
paths via :browse!

Prelude :m +Data.List
Prelude Data.List :grep map|imported :browse!

-- imported via Data.List
mapAccumL :: (acc - x - (acc, y)) - acc - [x] - (acc, [y])
mapAccumR :: (acc - x - (acc, y)) - acc - [x] - (acc, [y])
-- imported via Data.List, Prelude
map :: (a - b) - [a] - [b]

(:browse! is standard GHCi, :grep is non-standard, just to filter
:browse! output). So the :browse! command seems to be able
to find more of the information you want.

haskellmode for Vim, on the other hand, has long provided
haddock lookup, and will offer you a menu of possible 
destinations when your cursor is over 'map'. This menu is 
built from an index of Haddock entries, which is extracted 
from installed Haddock documentation. 

Nothing impossible about that, just ugly: so far, the index 
is scraped from Haddock's HTML index files. That route
breaks occasionally (recent Haddock HTML changes, 
ghc-pkg listing wrong Haddock paths, ..; I'm about to 
publish updated scraping code for GHC-7.0.1's Haddock..).

To get something less ugly, I'm currently recoding the 
extraction by using Haddock's API and .haddock files
(that'll still break when the API changes, also there is 
a pending bug about ghc-pkg, cabal, and haddock 
disagreeing about filepath formats, meaning that
.haddock files aren't found on Windows). 

I assume that code will be useful to other Haskell IDEs,
though it is mostly exposing Haddock's internal ability to
build an index from .haddock files, which I'd like to see
exposed in Haddock's less-than-well-known API:

http://trac.haskell.org/haddock/ticket/157

Claus

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


Re: Using the GHC API: pretty printing with qualified names

2010-11-17 Thread scooter . phd
Claus:

scion-server mimics a GHCi command line, of sorts. scion-server is used very 
successfully to syntax-highlight the Eclipse editor, show a source's outline, 
provide type information when hovering over a name, and provide completions.

That's not the problem, per se. Let's say I'm hovering over a function that's 
imported by Data.Map. When resolved, the symbols appear to come from Ghc.Map 
(if memory serves correctly), which makes finding the correct haddock 
impossible.


-scooter


Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Claus Reinke claus.rei...@talk21.com
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Wed, 17 Nov 2010 23:25:29 
To: JP Moresmaujpmores...@gmail.com; glasgow-haskell-users@haskell.org
Subject: Re: Using the GHC API: pretty printing with qualified names

 Hello, I'm the maintainer for EclipseFP, which involves using the scion
 library and the GHC API to provide IDE functionality. I have a little 
 issue
 that no doubt stems from me not understanding the GHC API well, and I 
 would
 be grateful for any light on the matter.

A meta-comment: the GHC API is much easier to grasp if
you have a client at hand. In the case of IDE-like tools, my
recommendation would be to look at the GHCi source -
there is a wide range of overlap between what makes
sense for GHCi and what makes sense for an IDE (think
of GHCi as a commandline IDE;-).

For your particular question: GHCi provides :info, which
does manage to get (rough) source info for plain unqualified
names, within a session context. So, starting from the source
of the :info implementation might give you some hints (the
command itself also helps you to find the GHC API source
in question).

Prelude :set -package ghc
Prelude :info GHC.getName
class Name.NamedThing a where
  ...
  Name.getName :: a - Name.Name
-- Defined in Name

Prelude :info Monad
class Monad m where
  (=) :: m a - (a - m b) - m b
  () :: m a - m b - m b
  return :: a - m a
  fail :: String - m a
-- Defined in GHC.Base
instance Monad Maybe -- Defined in Data.Maybe
instance Monad [] -- Defined in GHC.Base
instance Monad IO -- Defined in GHC.Base

Prelude :info mapM
mapM :: Monad m = (a - m b) - [a] - m [b]
-- Defined in Control.Monad

Of course, those sources and GHCi commands aren't
perfect (some of the code might still pre-date the API),
and batch-processing an AST is different from an
interactive read-eval-print loop, but some of the API
was abstracted from GHCi and GHCi always needs to
build with the current API version.

Another side note: as you can see from the examples,
you may not always have any source code to point to,
in a typical GHC installation. That is why haskellmode
for Vim links to the haddocks for those ids (somewhat
oddly, the haddocks might come with HTML-ified sources,
even when the original source is not installed..).

Hope this helps,
Claus
 

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


Re: ANNOUNCE: GHC 7.0.1 Release Candidate 1

2010-09-29 Thread scooter . phd
This is indicative of a 32-bit object being linked into the shared library, 
FWIW.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Vivian McPhail haskell.vivian.mcph...@gmail.com
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Wed, 29 Sep 2010 19:25:10 
To: glasgow-haskell-users@haskell.org
Subject: Re: ANNOUNCE: GHC 7.0.1 Release Candidate 1

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


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


Re: __emutls_get_address link problem

2010-08-25 Thread scooter . phd
Christian:

Is it possible that you might have code compiled with an older version of ghc 
lying around in an odd place in your build hierarchy? I would imagine that you 
upgraded cabal-installed packages. If for some reason you copied or used rsync 
to replicate a directory tree onto the older machine, then that would explain 
why you are seeing these difficulties.


-scooter 
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Simon Marlow marlo...@gmail.com
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Wed, 25 Aug 2010 16:39:43 
To: Christian Maederchristian.mae...@dfki.de
Cc: glasgow-haskell-users@haskell.org
Subject: Re: __emutls_get_address link problem

On 25/08/2010 16:37, Christian Maeder wrote:
 Christian Maeder schrieb:
 Simon Marlow schrieb:
 On 23/08/2010 17:45, Brandon S Allbery KF8NH wrote:
 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 On 8/23/10 11:57 , Christian Maeder wrote:
 However, when I try to compile the simplest source with on older
 gcc-3.4.4 I get the link error below, but only for the threaded rts!

 With ghc-6.12.1 and gcc-4.x.y (x   3) I did not have such a problem when
 switching to a machine that only has gcc-3.4.4.
 You got lucky; mixing GCC major versions like that is not expected (much
 less guaranteed) to work in general.  GCC evidently changed the way it
 implements some thread support routines between gcc3 and gcc4.

 Why should it not be possible to create object files (like also dynamic
 libs) with (very) different compilers?

This is a case where the ABI changed between versions of gcc (I 
presume).  It rarely happens with C code, but happens more often with 
C++, and, of course, in GHC we change the ABI with every single release 
so you should be used to this by now :-)

 In particular, thread-local variables, which are used by the parallel GC.

 I'm just testing if I get runtime problems, but the linking error goes
 away, if I put libgcc_eh.a from gcc-4.3.3 into ghc's libdir.

 The hack seems to work, although it looks dangerous regarding other
 symbols from libgcc_eh.a that should be in sync with the used gcc-3.4.4.

I wouldn't trust it.  Why do you need to mix code compiled by two 
different gcc versions?

Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Using associated data types to create unpacked data structures

2010-08-12 Thread scooter . phd
C++ template instantiations are exported as weak linker symbols. It's just that 
the linker elides all of the implementations.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Johan Tibell johan.tib...@gmail.com
Sender: glasgow-haskell-users-boun...@haskell.org
Date: Thu, 12 Aug 2010 13:28:25 
To: Simon Marlowmarlo...@gmail.com
Cc: glasgow-haskell-usersglasgow-haskell-users@haskell.org
Subject: Re: Using associated data types to create unpacked data structures

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


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


Re: What does interruptibility mean exactly?

2010-06-15 Thread scooter . phd
It seems to me that the documentation could be further refined:

An acquisition operation cannot be interrupted when the requested resource is 
available; the resource is successfully acquired and the subsequent computation 
can proceed. On the other hand, if the resource is unavailable, then the 
acquisition operation is in a blocked state and can be interrupted.

I'm not sure that this is the exact phrasing, but it does convey the meaning a 
bit more clearly. Also missing is that interruptable implies restartable.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Bas van Dijk v.dijk@gmail.com
Date: Tue, 15 Jun 2010 20:36:44 
To: Simon Marlowmarlo...@gmail.com
Cc: glasgow-haskell-users@haskell.org; Don Stewartd...@galois.com
Subject: Re: What does interruptibility mean exactly?

On Tue, Jun 15, 2010 at 12:41 PM, Simon Marlow marlo...@gmail.com wrote:
 On 15/06/2010 09:00, Bas van Dijk wrote:

 On Mon, Jun 14, 2010 at 11:20 PM, Don Stewartd...@galois.com  wrote:

 v.dijk.bas:

 Hello,

 I've a short question about interruptible operations. In the following
 program is it possible for 'putMVar' to re-throw asynchronous
 exceptions even when asynchronous exception are blocked/masked?

   newEmptyMVar= \mv -  block $ putMVar mv x

 The documentation in Control.Exception about interruptible
 operations[1] confused me:

 Some operations are interruptible, which means that they can receive
 asynchronous exceptions even in the scope of a block. Any function
 which may itself block is defined as interruptible...


 I think the best definition of interruptible is in this paper:

    www.haskell.org/~simonmar/papers/async.pdf

 Section 5.3


 Thanks for the link Don! Next time I will re-read the paper before asking
 ;-)

 The definition makes it clear indeed:

 Any operation which may need to wait indefinitely for a resource
 (e.g., takeMVar) may receive asynchronous exceptions even within an
 enclosing block, BUT ONLY WHILE THE RESOURCE IS UNAVAILABLE

 So I guess I can update my threads package to use MVars again. Nice!
 because they were a bit faster in an informal benchmark I performed
 some time ago.

 This is currently true for takeMVar/putMVar but it is no longer true for
 throwTo (in 6.14+).  I'll update the docs to make that clear.  The reason is
 that throwTo now works by message passing when the target is on another CPU,
 and we consider a thread that is waiting for a response to a message to be
 blocked - even if the throwTo can in fact proceed immediately because the
 target is interruptible.

Thanks for the heads-up.

BTW I just released threads-0.3 which, among other things, uses MVars
again for waiting for the termination of a thread:
http://hackage.haskell.org/package/threads-0.3

Regards,

Bas
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Removing/deprecating -fvia-c

2010-02-16 Thread scooter . phd
It seems to me, in the absence of any other fallback, that the C backend should 
stay around. Assume that one is porting to a new platform, the C backend at 
least gives one code from which to bootstrap.

Calling convention handling: weak argument IMHO for ditching. Sounds like 
refactoring is required, and, yes, it's platform-specific.

Perl script postprocessing foo: I haven't looked at the code, but again, it 
sounds like platform-specific refactoring. Yes, I've looked at the web page.

There's a reason why backends are messy goo and have target triples, etc. It's 
like Monad: not everything is pure.

My vote is to keep the C backend. If it's good enough for LLVM, it's probably 
good enough for GHC.


-scooter
--Original Message--
From: Don Stewart
Sender: glasgow-haskell-users-boun...@haskell.org
To: glasgow-haskell-users@haskell.org
Subject: Re: Removing/deprecating -fvia-c
Sent: Feb 14, 2010 09:58

igloo:
 
 Hi all,
 
 We are planning to remove the -fvia-c way of compiling code
 (unregisterised compilers will continue to compile via C only, but
 registerised compilers will only use the native code generator).
 We'll probably deprecate -fvia-c in the 6.14 branch, and remove it in
 6.16.
 
 Simon Marlow has recently fixed FP performance for modern x86 chips in
 the native code generator in the HEAD. That was the last reason we know
 of to prefer via-C to the native code generators. But before we start
 the removal process, does anyone know of any other problems with the
 native code generators that need to be fixed first?
 

Do we have the blessing of the DPH team, wrt. tight, numeric inner loops?

As recently as last year -fvia-C -optc-O3 was still useful for some
microbenchmarks -- what's changed in that time, or is expected to change?

-- Don
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Sent from my Verizon Wireless BlackBerry___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Removing/deprecating -fvia-c

2010-02-16 Thread scooter . phd
Before the Pile on Scooter fest starts, bear in mind that LLVM effectively 
restricts you to its current backends. As the guy who started CellSPU in LLVM 
and who needs a good couple of research months off to finish it, think this 
through. Carefully.

FWIW: I lead a computer systems research department for a non-for-profit in 
real life.
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: scooter@gmail.com
Date: Wed, 17 Feb 2010 03:26:08 
To: Don Stewartd...@galois.com; glasgow-haskell-users@haskell.org
Subject: Re: Removing/deprecating -fvia-c

It seems to me, in the absence of any other fallback, that the C backend should 
stay around. Assume that one is porting to a new platform, the C backend at 
least gives one code from which to bootstrap.

Calling convention handling: weak argument IMHO for ditching. Sounds like 
refactoring is required, and, yes, it's platform-specific.

Perl script postprocessing foo: I haven't looked at the code, but again, it 
sounds like platform-specific refactoring. Yes, I've looked at the web page.

There's a reason why backends are messy goo and have target triples, etc. It's 
like Monad: not everything is pure.

My vote is to keep the C backend. If it's good enough for LLVM, it's probably 
good enough for GHC.


-scooter
--Original Message--
From: Don Stewart
Sender: glasgow-haskell-users-boun...@haskell.org
To: glasgow-haskell-users@haskell.org
Subject: Re: Removing/deprecating -fvia-c
Sent: Feb 14, 2010 09:58

igloo:
 
 Hi all,
 
 We are planning to remove the -fvia-c way of compiling code
 (unregisterised compilers will continue to compile via C only, but
 registerised compilers will only use the native code generator).
 We'll probably deprecate -fvia-c in the 6.14 branch, and remove it in
 6.16.
 
 Simon Marlow has recently fixed FP performance for modern x86 chips in
 the native code generator in the HEAD. That was the last reason we know
 of to prefer via-C to the native code generators. But before we start
 the removal process, does anyone know of any other problems with the
 native code generators that need to be fixed first?
 

Do we have the blessing of the DPH team, wrt. tight, numeric inner loops?

As recently as last year -fvia-C -optc-O3 was still useful for some
microbenchmarks -- what's changed in that time, or is expected to change?

-- Don
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Sent from my Verizon Wireless BlackBerry___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: DPH and CUDA status

2010-02-03 Thread scooter . phd
I'm personally pessimistic about the STI Cell, but it's a reasonable example 
wrt the difficulty of writing the backends. Barring the data and message 
orchestration, which also aflicts GPUs, there's the decision function as to 
when to migrate a computation to the accelerator (GPU, SPU, ...) Not so much of 
a problem in chip symmetric mcore, but gets pretty dicey for hybrid mcore.

Been trying to wrap my head around that problem for a couple of years.

-scooter
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Jeff Heard j...@renci.org
Date: Wed, 3 Feb 2010 14:06:02 
To: Brad Larsenbrad.lar...@gmail.com
Cc: GHC Usersglasgow-haskell-users@haskell.org
Subject: Re: DPH and CUDA status

You're quite correct.  I should say supplant for normal uses.  The
OpenCL drivers are built on top of CUDA, and they intend CUDA to
continue to be available, but OpenCL is more portable and thus
something that we should probably target at some point.

On Wed, Feb 3, 2010 at 1:54 PM, Brad Larsen brad.lar...@gmail.com wrote:
 On Wed, Feb 3, 2010 at 12:34 PM, Jeff Heard j...@renci.org wrote:
 [...]  One thing though, is that CUDA is being
 supplanted by OpenCL in the next few years, and OpenCL can handle data
 parallelism on multicore CPUs as well as GPUs with the same code.
 It's a little more flexible overall than CUDA, and will be portable
 across ATI/nVidia/Intell/AMD/Sony Cell in the end, and is well
 supported on Linux, Mac, and Windows systems.
 [...]

 I have been told by NVIDIA folks that CUDA is not going to disappear.
 Its C++ API (as opposed to its ``driver interface'') is quite a bit
 higher level than OpenCL, suitable for (painful) application
 development, whereas OpenCL seems more targeted for compiler and
 framework writers.

 Sincerely,
 Brad

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


Re: Compiling to ANSI C

2009-11-07 Thread scooter . phd
Do we have a native LLVM bitcode writer or is it still FFI?

--Original Message--
From: Thomas DuBuisson
Sender: glasgow-haskell-users-boun...@haskell.org
To: han
Cc: glasgow-haskell-users@haskell.org
Subject: Re: Compiling to ANSI C
Sent: Nov 7, 2009 09:56

If I were you, I'd look at using the recent LLVM backend work as a
means to translate Haskell - ARM.

Thomas

On Sat, Nov 7, 2009 at 9:08 AM, han e...@xtendo.org wrote:
 I am (in fact we are) working to make Haskell code to run on an ARM
 Linux machine called GP2X Wiz, the open-source based handheld game
 console.

 I wish to finally make a Haskell cross-compiler for ARM Linux, and for
 now I am trying to make

 main = putStrLn Hello, World!

 to run on the machine. At first I did

 $ ghc hello.hs -o hello -fvia-C -keep-hc-files

 and tried to use the generated hc file, but figured that the code is
 (or at least some code in the included headers is) x86-dependent.

 I heard that the GHC can compile to ANSI C, and I want to use it as an
 intermediate code to ARM Linux before we can actually port the GHC to
 it.

 Is there any specific option I have to give in order to generate an
 ANSI C code from a Haskell source code?
 ___
 Glasgow-haskell-users mailing list
 Glasgow-haskell-users@haskell.org
 http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

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


Sent from my Verizon Wireless BlackBerry___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Compiling to ANSI C

2009-11-07 Thread scooter . phd
Believe it when it shows up in GHC pristine.

--Original Message--
From: Thomas DuBuisson
To: scooter@gmail.com
Cc: han
Cc: glasgow-haskell-users@haskell.org
Subject: Re: Compiling to ANSI C
Sent: Nov 7, 2009 11:28

On Sat, Nov 7, 2009 at 11:16 AM,  scooter@gmail.com wrote:
 Do we have a native LLVM bitcode writer or is it still FFI?

I was referring to a paper [1] I just ran into on reddit.  I only
skimmed it, but it seems they (or just he?) integrated LLVM as a new
backend for GHC.

Thomas

[1] http://www.cse.unsw.edu.au/~pls/thesis/davidt-thesis.pdf


Sent from my Verizon Wireless BlackBerry
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Update on GHC 6.12.1

2009-10-29 Thread scooter . phd
Is there a good motivating example for recursive do? So far, I haven't grokked 
the various use cases, which are pretty terse. Maybe the syntax sugar gets in 
the way (dangling lets are a good case in point).

It's a bit like grokking a Monad: it's the way to alter state, through a chain 
of binds, culminating in a return, where values can't escape outside the Monad 
itself. Using IO as the example w/the (hidden) realworld parameter makes the 
explanation more opaque than it need be.


-scooter
Sent from my Verizon Wireless BlackBerry

-Original Message-
From: Greg Fitzgerald gari...@gmail.com
Date: Thu, 29 Oct 2009 10:24:23 
To: Simon Peyton-Jonessimo...@microsoft.com
Cc: GHC usersglasgow-haskell-users@haskell.org
Subject: Re: Update on GHC 6.12.1

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


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