<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/haskell.git/libraries/binary, branch wip/stringbuffer</title>
<subtitle>gitlab.haskell.org: ghc/ghc.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/'/>
<entry>
<title>Encode shape information in `PmOracle`</title>
<updated>2019-09-16T17:33:05+00:00</updated>
<author>
<name>Sebastian Graf</name>
<email>sebastian.graf@kit.edu</email>
</author>
<published>2019-05-16T16:49:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=7915afc6bb9539a4534db99aeb6616a6d145918a'/>
<id>7915afc6bb9539a4534db99aeb6616a6d145918a</id>
<content type='text'>
Previously, we had an elaborate mechanism for selecting the warnings to
generate in the presence of different `COMPLETE` matching groups that,
albeit finely-tuned, produced wrong results from an end user's
perspective in some cases (#13363).

The underlying issue is that at the point where the `ConVar` case has to
commit to a particular `COMPLETE` group, there's not enough information
to do so and the status quo was to just enumerate all possible complete
sets nondeterministically.  The `getResult` function would then pick the
outcome according to metrics defined in accordance to the user's guide.
But crucially, it lacked knowledge about the order in which affected
clauses appear, leading to the surprising behavior in #13363.

In !1010 we taught the term oracle to reason about literal values a
variable can certainly not take on. This MR extends that idea to
`ConLike`s and thereby fixes #13363: Instead of committing to a
particular `COMPLETE` group in the `ConVar` case, we now split off the
matching constructor incrementally and record the newly covered case as
a refutable shape in the oracle. Whenever the set of refutable shapes
covers any `COMPLETE` set, the oracle recognises vacuosity of the
uncovered set.

This patch goes a step further: Since at this point the information
in value abstractions is merely a cut down representation of what the
oracle knows, value abstractions degenerate to a single `Id`, the
semantics of which is determined by the oracle state `Delta`.
Value vectors become lists of `[Id]` given meaning to by a single
`Delta`, value set abstractions (of which the uncovered set is an
instance) correspond to a union of `Delta`s which instantiate the
same `[Id]` (akin to models of formula).

Fixes #11528 #13021, #13363, #13965, #14059, #14253, #14851, #15753, #17096, #17149

-------------------------
Metric Decrease:
    ManyAlternatives
    T11195
-------------------------
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, we had an elaborate mechanism for selecting the warnings to
generate in the presence of different `COMPLETE` matching groups that,
albeit finely-tuned, produced wrong results from an end user's
perspective in some cases (#13363).

The underlying issue is that at the point where the `ConVar` case has to
commit to a particular `COMPLETE` group, there's not enough information
to do so and the status quo was to just enumerate all possible complete
sets nondeterministically.  The `getResult` function would then pick the
outcome according to metrics defined in accordance to the user's guide.
But crucially, it lacked knowledge about the order in which affected
clauses appear, leading to the surprising behavior in #13363.

In !1010 we taught the term oracle to reason about literal values a
variable can certainly not take on. This MR extends that idea to
`ConLike`s and thereby fixes #13363: Instead of committing to a
particular `COMPLETE` group in the `ConVar` case, we now split off the
matching constructor incrementally and record the newly covered case as
a refutable shape in the oracle. Whenever the set of refutable shapes
covers any `COMPLETE` set, the oracle recognises vacuosity of the
uncovered set.

This patch goes a step further: Since at this point the information
in value abstractions is merely a cut down representation of what the
oracle knows, value abstractions degenerate to a single `Id`, the
semantics of which is determined by the oracle state `Delta`.
Value vectors become lists of `[Id]` given meaning to by a single
`Delta`, value set abstractions (of which the uncovered set is an
instance) correspond to a union of `Delta`s which instantiate the
same `[Id]` (akin to models of formula).

Fixes #11528 #13021, #13363, #13965, #14059, #14253, #14851, #15753, #17096, #17149

-------------------------
Metric Decrease:
    ManyAlternatives
    T11195
-------------------------
</pre>
</div>
</content>
</entry>
<entry>
<title>Create {Int,Word}32Rep</title>
<updated>2019-07-17T16:20:26+00:00</updated>
<author>
<name>John Ericson</name>
<email>git@JohnEricson.me</email>
</author>
<published>2019-06-10T13:32:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=0a9b77b8b4313a9ffe7483cbc286d249fda59e75'/>
<id>0a9b77b8b4313a9ffe7483cbc286d249fda59e75</id>
<content type='text'>
This prepares the way for making Int32# and Word32# the actual size they
claim to be.

Updates binary submodule for (de)serializing the new runtime reps.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This prepares the way for making Int32# and Word32# the actual size they
claim to be.

Updates binary submodule for (de)serializing the new runtime reps.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump binary to 0.8.7.0</title>
<updated>2019-06-12T12:19:59+00:00</updated>
<author>
<name>Ben Gamari</name>
<email>ben@smart-cactus.org</email>
</author>
<published>2019-06-07T21:34:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=bd2d13ff778a4b1b5d793c99229cccfb64d792f3'/>
<id>bd2d13ff778a4b1b5d793c99229cccfb64d792f3</id>
<content type='text'>
(cherry picked from commit 983ada70a013c7642a751f6e41587ff95b57d0f8)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 983ada70a013c7642a751f6e41587ff95b57d0f8)
</pre>
</div>
</content>
</entry>
<entry>
<title>Update binary submodule to latest master branch tip</title>
<updated>2019-01-27T13:32:12+00:00</updated>
<author>
<name>Herbert Valerio Riedel</name>
<email>hvr@gnu.org</email>
</author>
<published>2019-01-23T22:26:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=f75c86ab6687278547e2924fddda0192c65bb512'/>
<id>f75c86ab6687278547e2924fddda0192c65bb512</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce Int16# and Word16#</title>
<updated>2018-11-17T15:03:17+00:00</updated>
<author>
<name>Abhiroop Sarkar</name>
<email>asiamgenius@gmail.com</email>
</author>
<published>2018-11-05T17:06:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=36fcf9edee31513db2ddbf716ee0aa79766cbe69'/>
<id>36fcf9edee31513db2ddbf716ee0aa79766cbe69</id>
<content type='text'>
This builds off of D4475.

Bumps binary submodule.

Reviewers: carter, AndreasK, hvr, goldfire, bgamari, simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D5006
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This builds off of D4475.

Bumps binary submodule.

Reviewers: carter, AndreasK, hvr, goldfire, bgamari, simonmar

Subscribers: rwbarton, thomie

Differential Revision: https://phabricator.haskell.org/D5006
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Int8# and Word8#</title>
<updated>2018-11-02T21:15:01+00:00</updated>
<author>
<name>Michal Terepeta</name>
<email>michal.terepeta@gmail.com</email>
</author>
<published>2018-11-02T18:27:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=2c959a1894311e59cd2fd469c1967491c1e488f3'/>
<id>2c959a1894311e59cd2fd469c1967491c1e488f3</id>
<content type='text'>
This is the first step of implementing:
https://github.com/ghc-proposals/ghc-proposals/pull/74

The main highlights/changes:

    primops.txt.pp gets two new sections for two new primitive types for
    signed and unsigned 8-bit integers (Int8# and Word8 respectively) along
    with basic arithmetic and comparison operations. PrimRep/RuntimeRep get
    two new constructors for them. All of the primops translate into the
    existing MachOPs.

    For CmmCalls the codegen will now zero-extend the values at call
    site (so that they can be moved to the right register) and then truncate
    them back their original width.

    x86 native codegen needed some updates, since it wasn't able to deal
    with the new widths, but all the changes are quite localized. LLVM
    backend seems to just work.

This is the second attempt at merging this, after the first attempt in
D4475 had to be backed out due to regressions on i386.

Bumps binary submodule.

Signed-off-by: Michal Terepeta &lt;michal.terepeta@gmail.com&gt;

Test Plan: ./validate (on both x86-{32,64})

Reviewers: bgamari, hvr, goldfire, simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5258
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the first step of implementing:
https://github.com/ghc-proposals/ghc-proposals/pull/74

The main highlights/changes:

    primops.txt.pp gets two new sections for two new primitive types for
    signed and unsigned 8-bit integers (Int8# and Word8 respectively) along
    with basic arithmetic and comparison operations. PrimRep/RuntimeRep get
    two new constructors for them. All of the primops translate into the
    existing MachOPs.

    For CmmCalls the codegen will now zero-extend the values at call
    site (so that they can be moved to the right register) and then truncate
    them back their original width.

    x86 native codegen needed some updates, since it wasn't able to deal
    with the new widths, but all the changes are quite localized. LLVM
    backend seems to just work.

This is the second attempt at merging this, after the first attempt in
D4475 had to be backed out due to regressions on i386.

Bumps binary submodule.

Signed-off-by: Michal Terepeta &lt;michal.terepeta@gmail.com&gt;

Test Plan: ./validate (on both x86-{32,64})

Reviewers: bgamari, hvr, goldfire, simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5258
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Add Int8# and Word8#"</title>
<updated>2018-10-09T16:40:23+00:00</updated>
<author>
<name>Ben Gamari</name>
<email>ben@smart-cactus.org</email>
</author>
<published>2018-10-09T16:39:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=d728c3c578cc9e9205def2c1e96934487b364b7b'/>
<id>d728c3c578cc9e9205def2c1e96934487b364b7b</id>
<content type='text'>
This unfortunately broke i386 support since it introduced references to
byte-sized registers that don't exist on that architecture.

Reverts binary submodule

This reverts commit 5d5307f943d7581d7013ffe20af22233273fba06.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This unfortunately broke i386 support since it introduced references to
byte-sized registers that don't exist on that architecture.

Reverts binary submodule

This reverts commit 5d5307f943d7581d7013ffe20af22233273fba06.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Int8# and Word8#</title>
<updated>2018-10-07T22:36:07+00:00</updated>
<author>
<name>Michal Terepeta</name>
<email>michal.terepeta@gmail.com</email>
</author>
<published>2018-10-04T17:56:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=5d5307f943d7581d7013ffe20af22233273fba06'/>
<id>5d5307f943d7581d7013ffe20af22233273fba06</id>
<content type='text'>
This is the first step of implementing:
https://github.com/ghc-proposals/ghc-proposals/pull/74

The main highlights/changes:

- `primops.txt.pp` gets two new sections for two new primitive types
  for signed and unsigned 8-bit integers (`Int8#` and `Word8`
  respectively) along with basic arithmetic and comparison
  operations. `PrimRep`/`RuntimeRep` get two new constructors for
  them. All of the primops translate into the existing `MachOP`s.

- For `CmmCall`s the codegen will now zero-extend the values at call
  site (so that they can be moved to the right register) and then
  truncate them back their original width.

- x86 native codegen needed some updates, since it wasn't able to deal
  with the new widths, but all the changes are quite localized. LLVM
  backend seems to just work.

Bumps binary submodule.

Signed-off-by: Michal Terepeta &lt;michal.terepeta@gmail.com&gt;

Test Plan: ./validate with new tests

Reviewers: hvr, goldfire, bgamari, simonmar

Subscribers: Abhiroop, dfeuer, rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4475
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is the first step of implementing:
https://github.com/ghc-proposals/ghc-proposals/pull/74

The main highlights/changes:

- `primops.txt.pp` gets two new sections for two new primitive types
  for signed and unsigned 8-bit integers (`Int8#` and `Word8`
  respectively) along with basic arithmetic and comparison
  operations. `PrimRep`/`RuntimeRep` get two new constructors for
  them. All of the primops translate into the existing `MachOP`s.

- For `CmmCall`s the codegen will now zero-extend the values at call
  site (so that they can be moved to the right register) and then
  truncate them back their original width.

- x86 native codegen needed some updates, since it wasn't able to deal
  with the new widths, but all the changes are quite localized. LLVM
  backend seems to just work.

Bumps binary submodule.

Signed-off-by: Michal Terepeta &lt;michal.terepeta@gmail.com&gt;

Test Plan: ./validate with new tests

Reviewers: hvr, goldfire, bgamari, simonmar

Subscribers: Abhiroop, dfeuer, rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4475
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump binary submodule to 0.8.6.0</title>
<updated>2018-08-07T19:55:08+00:00</updated>
<author>
<name>Ben Gamari</name>
<email>ben@smart-cactus.org</email>
</author>
<published>2018-08-06T22:39:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=2604d9b48dfc3fee41082652dc26bf818626e317'/>
<id>2604d9b48dfc3fee41082652dc26bf818626e317</id>
<content type='text'>
This is actually a decrease in the version number since a bump to 0.10
wasn't actually necessary.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is actually a decrease in the version number since a bump to 0.10
wasn't actually necessary.
</pre>
</div>
</content>
</entry>
<entry>
<title>Bump binary submodule</title>
<updated>2018-08-03T20:22:43+00:00</updated>
<author>
<name>Ben Gamari</name>
<email>ben@smart-cactus.org</email>
</author>
<published>2018-08-02T12:29:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/haskell.git/commit/?id=8d04822e0ef1d390c3cffb55b1f75638c7a519e7'/>
<id>8d04822e0ef1d390c3cffb55b1f75638c7a519e7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
