RE: cminusminus.org does not have a link to the spec

2015-01-19 Thread Simon Peyton Jones
Simon M: this is more your bailiwick than mine.

Sergei: It's always a good idea to create a Trac ticket to accompany a Phab 
patch, because we have better milestone/priority support for Trac tickets.   
Don't forget to explain the motivation and rationale, giving examples.  If it 
all gets too voluminous, start a Trac wiki page.

Apols if you have done so already; I'm offline.

Simon

| -Original Message-
| From: Sergei Trofimovich [mailto:sly...@gmail.com]
| Sent: 17 January 2015 18:42
| To: Simon Peyton Jones
| Cc: Norman Ramsey; ghc-devs; Simon Marlow
| Subject: Re: cminusminus.org does not have a link to the spec
| 
| On Tue, 16 Sep 2014 20:23:10 +
| Simon Peyton Jones simo...@microsoft.com wrote:
| 
|  Thanks.  This is beyond my competence, and I'm totally submerged
| anyway.  I suggest you make a Trac ticket about it anyway.  Simon Marlow
| will probably have an opinion.
| 
| Today I've found an excuse to actually implement it :)
| https://phabricator.haskell.org/D622
| 
| Reused 'CLOSURE' token and added
| import CLOSURE id;
| to existing
| import id;
| 
|  | -Original Message-
|  | From: Sergei Trofimovich [mailto:sly...@gmail.com]
|  | Sent: 16 September 2014 19:03
|  | To: Simon Peyton Jones
|  | Cc: Norman Ramsey; ghc-devs; Simon Marlow
|  | Subject: Re: cminusminus.org does not have a link to the spec
|  |
|  | On Mon, 15 Sep 2014 12:05:27 +
|  | Simon Peyton Jones simo...@microsoft.com wrote:
|  |
|  | My planned change is for GHC's .cmm files syntax/codegen.
|  | The idea came out after having stumbled upon a rare ia64
|  | bug in GHC's C codegen:
|  |
|  |
|  |
| http://git.haskell.org/ghc.git/commitdiff/e18525fae273f4c1ad8d6cbe1dea4fc
|  | 074cac721
|  |
|  | The fundamental bug here is the following:
|  | Suppose we have two bits of rts: one .c file and one .cmm file
|  |
|  | // rts.c defines and exports a function and a variable
|  | void some_rts_fun (void);
|  | int some_rts_var;
|  |
|  | // rts.cmm uses rts.c's function and variable
|  | import some_rts_fun; /* this forces C codegen to emit function-
| like
|  |'StgFunPtr some_rts_fun
| ();'
|  | prototype, it's fine */
|  |
|  | import some_rts_var; /* also forces C codegen to emit function-
| like
|  |'StgFunPtr some_rts_var
| ();'
|  | prototype, it's broken */
|  | // ...
|  | W whatever = some_rts_var; /* will pick address not to a real
|  | variable, but to a
|  | so called
|  | function stub, a separate structure
|  | pointing to
| real
|  | 'some_rts_var' */
|  |
|  | I plan to tweak syntax to teach Cmm to distinct between
|  | imported C global variables/constants, imported Cmm info
|  | tables(closures), maybe other cases.
|  |
|  | I thought of adding haskell-like syntax for imports:
|  | foreign ccall import some_rts_fun;
|  | foreign cdata import some_rts_var;
|  |
|  | or maybe
|  | import some_rts_fun;
|  | import some_rts_fun as some_rts_fun;
|  |
|  | This sort of bugs can be easily spotted by whole-program C compiler.
|  | gcc can do it with -flto option. I basically added to the
| mk/build.mk:
|  | SRC_CC_OPTS += -flto
|  | SRC_LD_OPTS += -flto -fuse-linker-plugin
|  | SRC_HC_OPTS += -optc-flto
|  | SRC_HC_OPTS += -optl-flto -optl-fuse-linker-plugin
|  | and started with './configure --enable-unregisterised'
|  |
|  | It immediately shown some of current offenders:
|  |  error: variable 'ghczmprim_GHCziTypes_False_closure' redeclared
| as
|  | function
|  |  error: variable 'ghczmprim_GHCziTypes_True_closure' redeclared
| as
|  | function
|  |
|  | I hope this fuzzy explanation makes some sense.
|  |
|  | Thanks!
|  |
|  |  Sergei
|  | 
|  |  C-- was originally envisaged as a target language for a variety of
|  | compilers.  But in fact LLVM, which was developed at a similar time,
|  | won that race and has built a far larger ecosystem.  That's fine
| with
|  | us -- it's great how successful LLVM has been -- but it means that C-
| - is
|  | now used essentially only in GHC.
|  | 
|  |  I'm not sure where the original C-- documents now are; Norman can
| you
|  | say? (I do know that the cminusminus.org has lapsed.)
|  | 
|  |  The GHC variant of C-- is defined mainly by the Cmm data type in
| GHC's
|  | source code.  It does have a concrete syntax, because some bits of
| GHC's
|  | runtime system are written in Cmm. But I fear that this concrete
| language
|  | is not well documented.  (Simon Marlow may know more here.)
|  | 
|  |  Because GHC's Cmm is part of GHC, we are free to change it.  Would
| you
|  | like to say more about the change you want to make, and why you want
| to
|  | make it?  Is this relating directly to GHC or to some other project?
|  | 
|  |  Simon
|  | 
|  | 
|  |  | -Original 

Re: cminusminus.org does not have a link to the spec

2015-01-19 Thread Howard B. Golden
Hi Sergei,

See http://www.cs.tufts.edu/~nr/c--/extern/man2.ps


Google is your friend!

Howard
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: cminusminus.org does not have a link to the spec

2015-01-17 Thread Sergei Trofimovich
On Tue, 16 Sep 2014 20:23:10 +
Simon Peyton Jones simo...@microsoft.com wrote:

 Thanks.  This is beyond my competence, and I'm totally submerged anyway.  I 
 suggest you make a Trac ticket about it anyway.  Simon Marlow will probably 
 have an opinion.

Today I've found an excuse to actually implement it :)
https://phabricator.haskell.org/D622

Reused 'CLOSURE' token and added
import CLOSURE id;
to existing
import id;

 | -Original Message-
 | From: Sergei Trofimovich [mailto:sly...@gmail.com]
 | Sent: 16 September 2014 19:03
 | To: Simon Peyton Jones
 | Cc: Norman Ramsey; ghc-devs; Simon Marlow
 | Subject: Re: cminusminus.org does not have a link to the spec
 | 
 | On Mon, 15 Sep 2014 12:05:27 +
 | Simon Peyton Jones simo...@microsoft.com wrote:
 | 
 | My planned change is for GHC's .cmm files syntax/codegen.
 | The idea came out after having stumbled upon a rare ia64
 | bug in GHC's C codegen:
 | 
 | 
 | http://git.haskell.org/ghc.git/commitdiff/e18525fae273f4c1ad8d6cbe1dea4fc
 | 074cac721
 | 
 | The fundamental bug here is the following:
 | Suppose we have two bits of rts: one .c file and one .cmm file
 | 
 | // rts.c defines and exports a function and a variable
 | void some_rts_fun (void);
 | int some_rts_var;
 | 
 | // rts.cmm uses rts.c's function and variable
 | import some_rts_fun; /* this forces C codegen to emit function-like
 |'StgFunPtr some_rts_fun ();'
 | prototype, it's fine */
 | 
 | import some_rts_var; /* also forces C codegen to emit function-like
 |'StgFunPtr some_rts_var ();'
 | prototype, it's broken */
 | // ...
 | W whatever = some_rts_var; /* will pick address not to a real
 | variable, but to a
 | so called
 | function stub, a separate structure
 | pointing to real
 | 'some_rts_var' */
 | 
 | I plan to tweak syntax to teach Cmm to distinct between
 | imported C global variables/constants, imported Cmm info
 | tables(closures), maybe other cases.
 | 
 | I thought of adding haskell-like syntax for imports:
 | foreign ccall import some_rts_fun;
 | foreign cdata import some_rts_var;
 | 
 | or maybe
 | import some_rts_fun;
 | import some_rts_fun as some_rts_fun;
 | 
 | This sort of bugs can be easily spotted by whole-program C compiler.
 | gcc can do it with -flto option. I basically added to the mk/build.mk:
 | SRC_CC_OPTS += -flto
 | SRC_LD_OPTS += -flto -fuse-linker-plugin
 | SRC_HC_OPTS += -optc-flto
 | SRC_HC_OPTS += -optl-flto -optl-fuse-linker-plugin
 | and started with './configure --enable-unregisterised'
 | 
 | It immediately shown some of current offenders:
 |  error: variable 'ghczmprim_GHCziTypes_False_closure' redeclared as
 | function
 |  error: variable 'ghczmprim_GHCziTypes_True_closure' redeclared as
 | function
 | 
 | I hope this fuzzy explanation makes some sense.
 | 
 | Thanks!
 | 
 |  Sergei
 | 
 |  C-- was originally envisaged as a target language for a variety of
 | compilers.  But in fact LLVM, which was developed at a similar time,
 | won that race and has built a far larger ecosystem.  That's fine with
 | us -- it's great how successful LLVM has been -- but it means that C-- is
 | now used essentially only in GHC.
 | 
 |  I'm not sure where the original C-- documents now are; Norman can you
 | say? (I do know that the cminusminus.org has lapsed.)
 | 
 |  The GHC variant of C-- is defined mainly by the Cmm data type in GHC's
 | source code.  It does have a concrete syntax, because some bits of GHC's
 | runtime system are written in Cmm. But I fear that this concrete language
 | is not well documented.  (Simon Marlow may know more here.)
 | 
 |  Because GHC's Cmm is part of GHC, we are free to change it.  Would you
 | like to say more about the change you want to make, and why you want to
 | make it?  Is this relating directly to GHC or to some other project?
 | 
 |  Simon
 | 
 | 
 |  | -Original Message-
 |  | From: Sergei Trofimovich [mailto:sly...@gmail.com]
 |  | Sent: 14 September 2014 17:16
 |  | To: Simon Peyton Jones
 |  | Subject: cminusminus.org does not have a link to the spec
 |  |
 |  | Hello Simon!
 |  |
 |  | I had a plan to tweak a bit import statement
 |  | syntax of Cmm in GHC.
 |  |
 |  | Namely, to distinct between
 |  | import some_c_function;
 |  | import some_c_global_variable;
 |  |
 |  | To try it I first attempted to find latest c-- spec
 |  | (to find some design sketches if available) at
 |  |
 |  | http://www.cminusminus.org/c-downloads/
 |  |
 |  | But seems the links (and images?) have gone away
 |  | as well as rsync server described at:
 |  |
 |  | http://www.cminusminus.org/the-c-rsync-server/
 |  |
 |  | Maybe you could forward it to site admins so they would
 |  | tweak links or point me to working copy.
 |  

Re: cminusminus.org does not have a link to the spec

2014-09-16 Thread Sergei Trofimovich
On Mon, 15 Sep 2014 12:05:27 +
Simon Peyton Jones simo...@microsoft.com wrote:

My planned change is for GHC's .cmm files syntax/codegen.
The idea came out after having stumbled upon a rare ia64
bug in GHC's C codegen:


http://git.haskell.org/ghc.git/commitdiff/e18525fae273f4c1ad8d6cbe1dea4fc074cac721

The fundamental bug here is the following:
Suppose we have two bits of rts: one .c file and one .cmm file

// rts.c defines and exports a function and a variable
void some_rts_fun (void);
int some_rts_var;

// rts.cmm uses rts.c's function and variable
import some_rts_fun; /* this forces C codegen to emit function-like
   'StgFunPtr some_rts_fun ();' 
prototype, it's fine */

import some_rts_var; /* also forces C codegen to emit function-like
   'StgFunPtr some_rts_var ();' 
prototype, it's broken */
// ...
W whatever = some_rts_var; /* will pick address not to a real variable, 
but to a
so called function 
stub, a separate structure
pointing to real 
'some_rts_var' */

I plan to tweak syntax to teach Cmm to distinct between
imported C global variables/constants, imported Cmm info tables(closures), 
maybe other cases.

I thought of adding haskell-like syntax for imports:
foreign ccall import some_rts_fun;
foreign cdata import some_rts_var;

or maybe
import some_rts_fun;
import some_rts_fun as some_rts_fun;

This sort of bugs can be easily spotted by whole-program C compiler.
gcc can do it with -flto option. I basically added to the mk/build.mk:
SRC_CC_OPTS += -flto
SRC_LD_OPTS += -flto -fuse-linker-plugin
SRC_HC_OPTS += -optc-flto
SRC_HC_OPTS += -optl-flto -optl-fuse-linker-plugin
and started with './configure --enable-unregisterised'

It immediately shown some of current offenders:
 error: variable 'ghczmprim_GHCziTypes_False_closure' redeclared as function
 error: variable 'ghczmprim_GHCziTypes_True_closure' redeclared as function

I hope this fuzzy explanation makes some sense.

Thanks!

 Sergei
 
 C-- was originally envisaged as a target language for a variety of compilers. 
  But in fact LLVM, which was developed at a similar time, won that race and 
 has built a far larger ecosystem.  That's fine with us -- it's great how 
 successful LLVM has been -- but it means that C-- is now used essentially 
 only in GHC.
 
 I'm not sure where the original C-- documents now are; Norman can you say? (I 
 do know that the cminusminus.org has lapsed.)  
 
 The GHC variant of C-- is defined mainly by the Cmm data type in GHC's source 
 code.  It does have a concrete syntax, because some bits of GHC's runtime 
 system are written in Cmm. But I fear that this concrete language is not well 
 documented.  (Simon Marlow may know more here.)
 
 Because GHC's Cmm is part of GHC, we are free to change it.  Would you like 
 to say more about the change you want to make, and why you want to make it?  
 Is this relating directly to GHC or to some other project?
 
 Simon
 
 
 | -Original Message-
 | From: Sergei Trofimovich [mailto:sly...@gmail.com]
 | Sent: 14 September 2014 17:16
 | To: Simon Peyton Jones
 | Subject: cminusminus.org does not have a link to the spec
 | 
 | Hello Simon!
 | 
 | I had a plan to tweak a bit import statement
 | syntax of Cmm in GHC.
 | 
 | Namely, to distinct between
 | import some_c_function;
 | import some_c_global_variable;
 | 
 | To try it I first attempted to find latest c-- spec
 | (to find some design sketches if available) at
 | 
 | http://www.cminusminus.org/c-downloads/
 | 
 | But seems the links (and images?) have gone away
 | as well as rsync server described at:
 | 
 | http://www.cminusminus.org/the-c-rsync-server/
 | 
 | Maybe you could forward it to site admins so they would
 | tweak links or point me to working copy.
 | 
 | Apologies for bothering you on such minor
 | 
 | Thank you!
 | 
 | --
 | 
 |   Sergei


-- 

  Sergei


signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: cminusminus.org does not have a link to the spec

2014-09-16 Thread Simon Peyton Jones
Thanks.  This is beyond my competence, and I'm totally submerged anyway.  I 
suggest you make a Trac ticket about it anyway.  Simon Marlow will probably 
have an opinion.

Simon

| -Original Message-
| From: Sergei Trofimovich [mailto:sly...@gmail.com]
| Sent: 16 September 2014 19:03
| To: Simon Peyton Jones
| Cc: Norman Ramsey; ghc-devs; Simon Marlow
| Subject: Re: cminusminus.org does not have a link to the spec
| 
| On Mon, 15 Sep 2014 12:05:27 +
| Simon Peyton Jones simo...@microsoft.com wrote:
| 
| My planned change is for GHC's .cmm files syntax/codegen.
| The idea came out after having stumbled upon a rare ia64
| bug in GHC's C codegen:
| 
| 
| http://git.haskell.org/ghc.git/commitdiff/e18525fae273f4c1ad8d6cbe1dea4fc
| 074cac721
| 
| The fundamental bug here is the following:
| Suppose we have two bits of rts: one .c file and one .cmm file
| 
| // rts.c defines and exports a function and a variable
| void some_rts_fun (void);
| int some_rts_var;
| 
| // rts.cmm uses rts.c's function and variable
| import some_rts_fun; /* this forces C codegen to emit function-like
|'StgFunPtr some_rts_fun ();'
| prototype, it's fine */
| 
| import some_rts_var; /* also forces C codegen to emit function-like
|'StgFunPtr some_rts_var ();'
| prototype, it's broken */
| // ...
| W whatever = some_rts_var; /* will pick address not to a real
| variable, but to a
| so called
| function stub, a separate structure
| pointing to real
| 'some_rts_var' */
| 
| I plan to tweak syntax to teach Cmm to distinct between
| imported C global variables/constants, imported Cmm info
| tables(closures), maybe other cases.
| 
| I thought of adding haskell-like syntax for imports:
| foreign ccall import some_rts_fun;
| foreign cdata import some_rts_var;
| 
| or maybe
| import some_rts_fun;
| import some_rts_fun as some_rts_fun;
| 
| This sort of bugs can be easily spotted by whole-program C compiler.
| gcc can do it with -flto option. I basically added to the mk/build.mk:
| SRC_CC_OPTS += -flto
| SRC_LD_OPTS += -flto -fuse-linker-plugin
| SRC_HC_OPTS += -optc-flto
| SRC_HC_OPTS += -optl-flto -optl-fuse-linker-plugin
| and started with './configure --enable-unregisterised'
| 
| It immediately shown some of current offenders:
|  error: variable 'ghczmprim_GHCziTypes_False_closure' redeclared as
| function
|  error: variable 'ghczmprim_GHCziTypes_True_closure' redeclared as
| function
| 
| I hope this fuzzy explanation makes some sense.
| 
| Thanks!
| 
|  Sergei
| 
|  C-- was originally envisaged as a target language for a variety of
| compilers.  But in fact LLVM, which was developed at a similar time,
| won that race and has built a far larger ecosystem.  That's fine with
| us -- it's great how successful LLVM has been -- but it means that C-- is
| now used essentially only in GHC.
| 
|  I'm not sure where the original C-- documents now are; Norman can you
| say? (I do know that the cminusminus.org has lapsed.)
| 
|  The GHC variant of C-- is defined mainly by the Cmm data type in GHC's
| source code.  It does have a concrete syntax, because some bits of GHC's
| runtime system are written in Cmm. But I fear that this concrete language
| is not well documented.  (Simon Marlow may know more here.)
| 
|  Because GHC's Cmm is part of GHC, we are free to change it.  Would you
| like to say more about the change you want to make, and why you want to
| make it?  Is this relating directly to GHC or to some other project?
| 
|  Simon
| 
| 
|  | -Original Message-
|  | From: Sergei Trofimovich [mailto:sly...@gmail.com]
|  | Sent: 14 September 2014 17:16
|  | To: Simon Peyton Jones
|  | Subject: cminusminus.org does not have a link to the spec
|  |
|  | Hello Simon!
|  |
|  | I had a plan to tweak a bit import statement
|  | syntax of Cmm in GHC.
|  |
|  | Namely, to distinct between
|  | import some_c_function;
|  | import some_c_global_variable;
|  |
|  | To try it I first attempted to find latest c-- spec
|  | (to find some design sketches if available) at
|  |
|  | http://www.cminusminus.org/c-downloads/
|  |
|  | But seems the links (and images?) have gone away
|  | as well as rsync server described at:
|  |
|  | http://www.cminusminus.org/the-c-rsync-server/
|  |
|  | Maybe you could forward it to site admins so they would
|  | tweak links or point me to working copy.
|  |
|  | Apologies for bothering you on such minor
|  |
|  | Thank you!
|  |
|  | --
|  |
|  |   Sergei
| 
| 
| --
| 
|   Sergei
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: cminusminus.org does not have a link to the spec

2014-09-15 Thread Simon Peyton Jones
Sergei

C-- was originally envisaged as a target language for a variety of compilers.  
But in fact LLVM, which was developed at a similar time, won that race and 
has built a far larger ecosystem.  That's fine with us -- it's great how 
successful LLVM has been -- but it means that C-- is now used essentially only 
in GHC.

I'm not sure where the original C-- documents now are; Norman can you say? (I 
do know that the cminusminus.org has lapsed.)  

The GHC variant of C-- is defined mainly by the Cmm data type in GHC's source 
code.  It does have a concrete syntax, because some bits of GHC's runtime 
system are written in Cmm. But I fear that this concrete language is not well 
documented.  (Simon Marlow may know more here.)

Because GHC's Cmm is part of GHC, we are free to change it.  Would you like to 
say more about the change you want to make, and why you want to make it?  Is 
this relating directly to GHC or to some other project?

Simon


| -Original Message-
| From: Sergei Trofimovich [mailto:sly...@gmail.com]
| Sent: 14 September 2014 17:16
| To: Simon Peyton Jones
| Subject: cminusminus.org does not have a link to the spec
| 
| Hello Simon!
| 
| I had a plan to tweak a bit import statement
| syntax of Cmm in GHC.
| 
| Namely, to distinct between
| import some_c_function;
| import some_c_global_variable;
| 
| To try it I first attempted to find latest c-- spec
| (to find some design sketches if available) at
| 
| http://www.cminusminus.org/c-downloads/
| 
| But seems the links (and images?) have gone away
| as well as rsync server described at:
| 
| http://www.cminusminus.org/the-c-rsync-server/
| 
| Maybe you could forward it to site admins so they would
| tweak links or point me to working copy.
| 
| Apologies for bothering you on such minor
| 
| Thank you!
| 
| --
| 
|   Sergei
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: cminusminus.org does not have a link to the spec

2014-09-15 Thread Carter Schonwald
the historical c-- page still lives where norman moved it
www.cs.tufts.edu/~nr/c--/index.html

(and has all the content still)

On Mon, Sep 15, 2014 at 8:05 AM, Simon Peyton Jones simo...@microsoft.com
wrote:

 Sergei

 C-- was originally envisaged as a target language for a variety of
 compilers.  But in fact LLVM, which was developed at a similar time, won
 that race and has built a far larger ecosystem.  That's fine with us --
 it's great how successful LLVM has been -- but it means that C-- is now
 used essentially only in GHC.

 I'm not sure where the original C-- documents now are; Norman can you say?
 (I do know that the cminusminus.org has lapsed.)

 The GHC variant of C-- is defined mainly by the Cmm data type in GHC's
 source code.  It does have a concrete syntax, because some bits of GHC's
 runtime system are written in Cmm. But I fear that this concrete language
 is not well documented.  (Simon Marlow may know more here.)

 Because GHC's Cmm is part of GHC, we are free to change it.  Would you
 like to say more about the change you want to make, and why you want to
 make it?  Is this relating directly to GHC or to some other project?

 Simon


 | -Original Message-
 | From: Sergei Trofimovich [mailto:sly...@gmail.com]
 | Sent: 14 September 2014 17:16
 | To: Simon Peyton Jones
 | Subject: cminusminus.org does not have a link to the spec
 |
 | Hello Simon!
 |
 | I had a plan to tweak a bit import statement
 | syntax of Cmm in GHC.
 |
 | Namely, to distinct between
 | import some_c_function;
 | import some_c_global_variable;
 |
 | To try it I first attempted to find latest c-- spec
 | (to find some design sketches if available) at
 |
 | http://www.cminusminus.org/c-downloads/
 |
 | But seems the links (and images?) have gone away
 | as well as rsync server described at:
 |
 | http://www.cminusminus.org/the-c-rsync-server/
 |
 | Maybe you could forward it to site admins so they would
 | tweak links or point me to working copy.
 |
 | Apologies for bothering you on such minor
 |
 | Thank you!
 |
 | --
 |
 |   Sergei
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs