<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gf-core.git/src/compiler/GF/CompileInParallel.hs, branch optimize</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.adelon.net/gf-core.git/atom?h=optimize</id>
<link rel='self' href='https://git.adelon.net/gf-core.git/atom?h=optimize'/>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/'/>
<updated>2025-08-02T14:39:31+00:00</updated>
<entry>
<title>define return in terms of pure, &gt;&gt; as *&gt;, mappend as &lt;&gt;</title>
<updated>2025-08-02T14:39:31+00:00</updated>
<author>
<name>Inari Listenmaa</name>
<email>inari.listenmaa@gmail.com</email>
</author>
<published>2024-09-09T17:43:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=b914a25de326dd937e3a1d05f4eefb46af6da7b4'/>
<id>urn:sha1:b914a25de326dd937e3a1d05f4eefb46af6da7b4</id>
<content type='text'>
In preparation for deprecation, see https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/semigroup-monoid and https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return
</content>
</entry>
<entry>
<title>add whitespace on list comprehensions, applications etc.</title>
<updated>2025-08-02T14:39:31+00:00</updated>
<author>
<name>Inari Listenmaa</name>
<email>inari.listenmaa@gmail.com</email>
</author>
<published>2024-09-09T17:38:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=1037b209ae225d5de604ff832d915c590ced4c38'/>
<id>urn:sha1:1037b209ae225d5de604ff832d915c590ced4c38</id>
<content type='text'>
text editor interprets these things as errors (e.g. unterminated qq for list comprehension) and underlines red, even though there is no real error.
</content>
</entry>
<entry>
<title>MonadFail: Make backwards-compatible</title>
<updated>2020-09-05T18:23:07+00:00</updated>
<author>
<name>Andreas Källberg</name>
<email>anka.213@gmail.com</email>
</author>
<published>2020-09-05T18:23:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=7268253f5ae4b4883d28faa87b3e63295f04abfd'/>
<id>urn:sha1:7268253f5ae4b4883d28faa87b3e63295f04abfd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix most build errors</title>
<updated>2020-08-05T16:48:24+00:00</updated>
<author>
<name>Andreas Källberg</name>
<email>anka.213@gmail.com</email>
</author>
<published>2020-08-05T15:29:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=0581d6827ea2e4aac371eb05f3bf5508f3f40edc'/>
<id>urn:sha1:0581d6827ea2e4aac371eb05f3bf5508f3f40edc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>more dead code</title>
<updated>2019-09-20T14:15:28+00:00</updated>
<author>
<name>krangelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2019-09-20T14:15:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=30eef61f0a400d6b9ec77721620e13b8132a9c2c'/>
<id>urn:sha1:30eef61f0a400d6b9ec77721620e13b8132a9c2c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GF_LIB_PATH can now be path1:path2:path3, not just path1</title>
<updated>2018-07-22T07:04:07+00:00</updated>
<author>
<name>meng wong</name>
<email>mengwong@pobox.com</email>
</author>
<published>2017-08-19T11:27:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=8a14912ee3b692bc578465b6920575f5d7b11b4c'/>
<id>urn:sha1:8a14912ee3b692bc578465b6920575f5d7b11b4c</id>
<content type='text'>
Traditionally, GF_LIB_PATH points to something like
`.../share/ghc-8.0.2-x86_64/gf-3.9/lib`

and if you want prelude and alltenses and present, you add a
`--# -path=.:present`
compiler pragma to the top of your .gf file

But if you are developing some kind of application grammar
library or contrib of your own, you might find yourself
repeating your library path at the top of all your .gf files.

After painstakingly maintaining the same library path at the
top of all your .gf files, you might say, let's factor this
out into GF_LIB_PATH.

Then you might then find to your surprise that GF_LIB_PATH
doesn't accept the usual colon:separated:path notation
familiar from, say, unix PATH and MANPATH.

This patch allows you to define
`GF_LIB_PATH=gf-3.9.lib:$HOME/gf-contrib/whatever/lib`
in a more natural way.

If you are an RGL hacker and have your own version of the
RGL tree sitting somewhere, you should be able to have both
paths in the GF_LIB_PATH, for added convenience. This minor
convenience will probably lead to obscure bugs and great
frustration when you find that your changes are mysteriously
not being picked up by GF; so keep this in mind and use it
cautiously.

This caution should probably sit in the documentation
somewhere. A subsequent commit will do that.

If you use zsh, you can do this to quickly build up a big
GF_LIB_PATH:

% gf_lib_path=( $HOME/src/GF/lib/src/{api,abstract,common,english,api/libraryBrowser,prelude,..} )

% typeset -xT GF_LIB_PATH gf_lib_path
</content>
</entry>
<entry>
<title>Fixes for GHC 8.4.1 compatibility</title>
<updated>2018-04-18T17:18:10+00:00</updated>
<author>
<name>Thomas Hallgren</name>
<email>th-github@altocumulus.org</email>
</author>
<published>2018-04-18T17:18:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=820d2d503fde7b29634262fd07db2a4744cf813d'/>
<id>urn:sha1:820d2d503fde7b29634262fd07db2a4744cf813d</id>
<content type='text'>
* In GHC 8.4.1, the operator &lt;&gt; has become a method of the Semigroup class
  and is exported from the Prelude. This is unfortunate, since &lt;&gt; is also
  exported from the standard library module Text.PrettyPrint, so in any
  module that defines a pretty printer, there is likely to be an ambiguity.

  This affects ~18 modules in GF. Solution:

    import Prelude hiding (&lt;&gt;)

  This works also in older versions of GHC, since GHC does't complain if
  you hide something that doesn't exists.

* In GHC 8.4.1, Semigroup has become a superclass of Monoid. This means
  that anywhere you define an instance of the Monoid class you also have to
  define an instance in the Semigroup class.

  This affects Data.Binary.Builder in GF. Solution: conditionally define
  a Semigroup instance if compiling with base&gt;=4.11 (ghc&gt;=8.4.1)
</content>
</entry>
<entry>
<title>Parallel compilation: "gf -make -j" and "gf -make -j=n" now work as expected</title>
<updated>2015-09-11T14:18:01+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-09-11T14:18:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=9556cf453f6c1499a2907acd72d7b11211387b0d'/>
<id>urn:sha1:9556cf453f6c1499a2907acd72d7b11211387b0d</id>
<content type='text'>
  * "gf -make -j=n" uses n parallel threads.
  * "gf -make -j" adapts to the number of processors in the system.

This mimics how "cabal build -j" and "ghc --make -j" works.

Support for this is implemented in the new module GF.System.Concurrency and
it depends on the function Control.Concurrent.setNumCapabilities, which is
only available in GHC&gt;=7.6 (base&gt;=4.6). GF can still be compiled with
GHC&lt;7.6, but then you have to use +RTS -N -RTS to take advantage of
multicore processors.

To detect the number of processors in the system, the code depends on a
foreign import of a C function in the GHC run-time system.
</content>
</entry>
<entry>
<title>Bump version of .gfo and .pgf files, improve error messages on version mismatch</title>
<updated>2015-06-23T12:58:14+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-06-23T12:58:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=22ba8d34ff00bde6aa83dc9bdcdd13de34799c08'/>
<id>urn:sha1:22ba8d34ff00bde6aa83dc9bdcdd13de34799c08</id>
<content type='text'>
Becacuse of the new special tokens added to the Symbol type, .gfo and .pgf
files produced with the current version of GF can not always be used with
older versions of GF and the PGF run-time system.

The PGF version number was increased from (2,0) to (2,1). GF can still
read version (2,0) and (1,0), so old PGF files continue to work.

The GFO version was increased from "GF03" to "GF04".
</content>
</entry>
<entry>
<title>GF.CompileInParallel: get rid of the cryptic 'thread blocked indefinitely in an MVar operation' message after compilation errors</title>
<updated>2015-03-31T13:26:51+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-03-31T13:26:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=6e81383231d605253c2f3195c3d51b480b4d19fa'/>
<id>urn:sha1:6e81383231d605253c2f3195c3d51b480b4d19fa</id>
<content type='text'>
Instead show a message saying how many modules were affected by the compilation
errors.
</content>
</entry>
</feed>
