<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gf-core.git/src/compiler/GFC.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>2014-10-15T21:04:29+00:00</updated>
<entry>
<title>Rename modules GFI, GFC &amp; GFServer...</title>
<updated>2014-10-15T21:04:29+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-15T21:04:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=b70dba87bab5dfc8039f0b9f69e0851f92324f8b'/>
<id>urn:sha1:b70dba87bab5dfc8039f0b9f69e0851f92324f8b</id>
<content type='text'>
... to GF.Interactive, GF.Compiler &amp; GF.Server, respectively.
</content>
</entry>
<entry>
<title>(1) Refactor concurrency, (2) write to .gfo.tmp then rename to .gfo</title>
<updated>2014-09-08T15:43:20+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-09-08T15:43:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=4eb6b55e980fda9c4d260820f5a6d38dde3d0991'/>
<id>urn:sha1:4eb6b55e980fda9c4d260820f5a6d38dde3d0991</id>
<content type='text'>
(1) introduces the module GF.Infra.Concurreny with lifted concurrency
    operators (to reduce uses of liftIO) and some additional concurrency
    utilities, e.g. a function for sequential logging that is used in
    both GF.CompileInParallel and GFServer.
(2) avoids leaving broken .gfo files behind if compilation is aborted.
</content>
</entry>
<entry>
<title>Experimental: parallel batch compilation of grammars</title>
<updated>2014-08-25T09:56:00+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-08-25T09:56:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=d84c5ef1715c3e4aed4098ee9c847e2dcc86cba4'/>
<id>urn:sha1:d84c5ef1715c3e4aed4098ee9c847e2dcc86cba4</id>
<content type='text'>
On my laptop these changes speed up the full build of the RGL and example
grammars with 'cabal build' from ~95s to ~43s and the zero build from ~18s
to ~5s.

The main change is the introduction of the module GF.CompileInParallel that
replaces GF.Compile and the function GF.Compile.ReadFiles.getAllFiles. At
present, it is activated with the new -j flag, and it is only used when
combined with --make or --batch. In addition, to get parallel computations,
you need to add GHC run-time flags, e.g., +RTS -N -A20M -RTS, to the command
line.

The Setup.hs script has been modified to pass the appropriate flags to GF
for parallel compilation when compiling the RGL and example grammars, but you
need a recent version of Cabal for this to work (probably &gt;=1.20).

Some additonal refactoring were made during this work. A new monad is used to
avoid warnings/error messages from different modules to be intertwined when
compiling in parallel, so some functios that were hardiwred to the IO or IOE
monads have been lifted to work in arbitrary monads that are instances in
the appropriate classes.


</content>
</entry>
<entry>
<title>Fix warnings in 16 modules, mostly forward compatibility warnings from GHC 7.8</title>
<updated>2014-08-13T22:16:18+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-08-13T22:16:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=cd5193b7e19e7ff5e49cdeafe149fdeec8e19fb0'/>
<id>urn:sha1:cd5193b7e19e7ff5e49cdeafe149fdeec8e19fb0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>a partial support for def rules in the C runtime</title>
<updated>2014-08-11T10:59:10+00:00</updated>
<author>
<name>kr.angelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2014-08-11T10:59:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=584d589041f63fdd3ea777019679275657902c2d'/>
<id>urn:sha1:584d589041f63fdd3ea777019679275657902c2d</id>
<content type='text'>
The def rules are now compiled to byte code by the compiler and then to
native code by the JIT compiler in the runtime. Not all constructions
are implemented yet. The partial implementation is now in the repository
but it is not activated by default since this requires changes in the
PGF format. I will enable it only after it is complete.

</content>
</entry>
<entry>
<title>The --output-dir option now applies also to PGF files</title>
<updated>2014-06-21T12:26:56+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-06-21T12:26:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=58156369fac13076ea41ad9e99931512d89ce906'/>
<id>urn:sha1:58156369fac13076ea41ad9e99931512d89ce906</id>
<content type='text'>
</content>
</entry>
<entry>
<title>PGF library: expose only PGF and PGF.Internal instead of all modules</title>
<updated>2014-06-12T14:43:18+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-06-12T14:43:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=d6252d1c16d59ad26db0d08a531cddf39864d9db'/>
<id>urn:sha1:d6252d1c16d59ad26db0d08a531cddf39864d9db</id>
<content type='text'>
PGF exports the public, stable API.
PGF.Internal exports additional things needed in the GF compiler &amp; shell,
including the nonstardard version of Data.Binary.
</content>
</entry>
<entry>
<title>now we compile context-free grammars directly to PGF without going via GF source code. This makes it quick and lightweight to compile big grammars such as the Berkley grammar</title>
<updated>2014-05-24T07:47:06+00:00</updated>
<author>
<name>kr.angelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2014-05-24T07:47:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=67f64cb233edb899b2b1ad550ae8c832960fb7a2'/>
<id>urn:sha1:67f64cb233edb899b2b1ad550ae8c832960fb7a2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor the compilation of CFG and EBNF grammars. Now they are parsed by using GF.Grammar.Parser just like the ordinary GF grammars. Furthermore now GF.Speech.CFG is moved to GF.Grammar.CFG. The new module is used by both the speech conversion utils and by the compiler for CFG grammars. The parser for CFG now consumes a lot less memory and can be used with grammars with more than 4 000 000 productions.</title>
<updated>2014-03-21T21:25:05+00:00</updated>
<author>
<name>kr.angelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2014-03-21T21:25:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=51a9ef72c7e32f06d2413a5aea5751df2780063b'/>
<id>urn:sha1:51a9ef72c7e32f06d2413a5aea5751df2780063b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GFC.hs: encodeFile_ is not available in the standard Data.Binary</title>
<updated>2014-02-04T13:36:16+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-02-04T13:36:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=3900d3cfbb47539a8acbd332cdea6a0b1a2f1a60'/>
<id>urn:sha1:3900d3cfbb47539a8acbd332cdea6a0b1a2f1a60</id>
<content type='text'>
</content>
</entry>
</feed>
