<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gf-core.git/src/compiler/GF/Infra/Ident.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>2021-06-30T08:58:23+00:00</updated>
<entry>
<title>Make GF.Grammar.Canonical.Id a type synonym for GF.Infra.Ident.RawIdent</title>
<updated>2021-06-30T08:58:23+00:00</updated>
<author>
<name>John J. Camilleri</name>
<email>john@digitalgrammars.com</email>
</author>
<published>2021-06-30T08:58:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=0a70eca6e2913c462c5c65361131f3ed341e539d'/>
<id>urn:sha1:0a70eca6e2913c462c5c65361131f3ed341e539d</id>
<content type='text'>
This avoids a lot of conversion back and forth between Strings and ByteStrings

This commit was cherry-picked from d0c27cdaae78c670b098740bfb49b428d900e640 (lpgf branch)
</content>
</entry>
<entry>
<title>Various small changes for improved documentation</title>
<updated>2014-10-22T15:45:52+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-22T15:45:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=6ee67cd04ffbce375d7f10e74a5d9eb742d6428d'/>
<id>urn:sha1:6ee67cd04ffbce375d7f10e74a5d9eb742d6428d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ModuleName and Ident are now distinct types</title>
<updated>2014-10-21T19:20:31+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-21T19:20:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=391b301881bee7de9580f2c6d819144161e6a51d'/>
<id>urn:sha1:391b301881bee7de9580f2c6d819144161e6a51d</id>
<content type='text'>
This makes the documentation clearer, and can potentially catch more
programming mistakes.

</content>
</entry>
<entry>
<title>Remove some dead code</title>
<updated>2014-10-20T15:05:43+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-20T15:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=55aebadd5a64eb3f6a566168bbeeeb7cbb4ccb44'/>
<id>urn:sha1:55aebadd5a64eb3f6a566168bbeeeb7cbb4ccb44</id>
<content type='text'>
* The following modules are no longer used and have been removed completely:

	GF.Compile.Compute.ConcreteLazy
	GF.Compile.Compute.ConcreteStrict
	GF.Compile.Refresh

* The STM monad has been commented out. It was only used in
  GF.Compile.SubExpOpt, where could be replaced with a plain State monad,
  since no error handling was needed. One of the functions was hardwired to
  the Err monad, but did in fact not use error handling, so it was turned
  into a pure function.

* The function errVal has been renamed to fromErr (since it is analogous to
  fromMaybe).

* Replaced 'fail' with 'raise' and 'return ()' with 'done' in a few places.

* Some additional old code that was already commented out has been removed.
</content>
</entry>
<entry>
<title>More haddock documentation improvements</title>
<updated>2014-10-16T14:03:57+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-16T14:03:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=c924491289259fa8a5a259ed97f2d9e817e3338c'/>
<id>urn:sha1:c924491289259fa8a5a259ed97f2d9e817e3338c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Introducing GF.Text.Pretty for more concise pretty printers and GF.Infra.Location for modularity</title>
<updated>2014-07-27T22:06:23+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-07-27T22:06:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=30cda5151651e712803527b6ab4e5abc07536f2c'/>
<id>urn:sha1:30cda5151651e712803527b6ab4e5abc07536f2c</id>
<content type='text'>
GF.Text.Pretty provides the class Pretty and overloaded versions of the pretty
printing combinators in Text.PrettyPrint, allowing pretty printable values to
be used directly instead of first having to convert them to Doc with functions
like text, int, char and ppIdent. Some modules have been converted to use
GF.Text.Pretty, but not all. Precedences could be added to simplify the pretty
printers for terms and patterns.

GF.Infra.Location contains the types Location and L, factored out from
GF.Grammar.Grammar, and the class HasSourcePath. This allowed the import
of GF.Grammar.Grammar to be removed from GF.Infra.CheckM, making it more
like a pure library module.

</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>Represent identifiers as UTF-8-encoded ByteStrings</title>
<updated>2013-11-26T16:12:03+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2013-11-26T16:12:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=3f57151cc346be0fbf0726d4953f3529ea45e7f4'/>
<id>urn:sha1:3f57151cc346be0fbf0726d4953f3529ea45e7f4</id>
<content type='text'>
This was a fairly simple change thanks to previous work on making the Ident
type abstract and the fact that PGF.CId already uses UTF-8-encoded
ByteStrings.

One potential pitfall is that Data.ByteString.UTF8 uses the same type for
ByteStrings as Data.ByteString. I renamed ident2bs to ident2utf8 and
bsCId to utf8CId, to make it clearer that they work with UTF-8-encoded
ByteStrings.

Since both the compiler input and identifiers are now UTF-8-encoded
ByteStrings, the lexer now creates identifiers without copying any characters.
**END OF DESCRIPTION***

Place the long patch description above the ***END OF DESCRIPTION*** marker.
The first line of this file will be the patch name.


This patch contains the following changes:

M ./src/compiler/GF/Compile/CheckGrammar.hs -3 +3
M ./src/compiler/GF/Compile/GrammarToPGF.hs -2 +2
M ./src/compiler/GF/Grammar/Binary.hs -5 +1
M ./src/compiler/GF/Grammar/Lexer.x -11 +13
M ./src/compiler/GF/Infra/Ident.hs -19 +36
M ./src/runtime/haskell/PGF.hs -1 +1
M ./src/runtime/haskell/PGF/CId.hs -2 +3
</content>
</entry>
<entry>
<title>Comment out identifier refreshing code only used by the removed refresh pass</title>
<updated>2013-09-20T16:36:24+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2013-09-20T16:36:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=9cbd28e9cec5d6270f2a03fa4fbeefb60169e217'/>
<id>urn:sha1:9cbd28e9cec5d6270f2a03fa4fbeefb60169e217</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Introduce type RawIdent; only 9 imports of Data.ByteString.Char8 remain</title>
<updated>2013-09-19T20:48:10+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2013-09-19T20:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=021b5f06d3900fe2b10d5d3ccf6ac286a779ef16'/>
<id>urn:sha1:021b5f06d3900fe2b10d5d3ccf6ac286a779ef16</id>
<content type='text'>
The fact that identifiers are represented as ByteStrings is now an internal
implentation detail in module GF.Infra.Ident. Conversion between ByteString
and identifiers is only needed in the lexer and the Binary instances.
</content>
</entry>
</feed>
