RyanGlScott (Ryan Scott)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 8 2015, 11:07 PM (193 w, 5 d)

Recent Activity

Yesterday

RyanGlScott updated the diff for D5094: Normalise EmptyCase types using the constraint solver.
Tue, Sep 25, 10:11 PM
RyanGlScott committed rGHC2a9ceadfa07e: Add regression test for #15666 (authored by RyanGlScott).
Add regression test for #15666
Tue, Sep 25, 8:38 AM

Mon, Sep 24

RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

OK... so where are we with this patch?

Mon, Sep 24, 11:25 AM
RyanGlScott updated the diff for D5094: Normalise EmptyCase types using the constraint solver.

Rebase on top of master

Mon, Sep 24, 7:49 AM
RyanGlScott updated subscribers of D5173: Allow (unparenthesized) kind signatures.

It would be interesting to hear @alanz's opinion on https://phabricator.haskell.org/D5173#142447.

Mon, Sep 24, 4:32 AM

Sun, Sep 23

RyanGlScott accepted D5172: Don't show constraint tuples in errors (#14907).
Sun, Sep 23, 10:12 PM
RyanGlScott committed rGHCe68b439fe5de: Add a recursivity check in nonVoid (authored by RyanGlScott).
Add a recursivity check in nonVoid
Sun, Sep 23, 9:45 AM
RyanGlScott closed D5116: Add a recursivity check in nonVoid.
Sun, Sep 23, 9:45 AM
RyanGlScott accepted D5167: Improve generated `GHC.Prim` docs.

LGTM!

Sun, Sep 23, 7:33 AM
RyanGlScott added a comment to D5172: Don't show constraint tuples in errors (#14907).

This looks mostly solid. I've left some refactoring and error message suggestions inline.

Sun, Sep 23, 7:32 AM
RyanGlScott added a comment to D5173: Allow (unparenthesized) kind signatures.

Great work! One comment inline.

Sun, Sep 23, 7:00 AM

Fri, Sep 21

RyanGlScott added inline comments to D5167: Improve generated `GHC.Prim` docs.
Fri, Sep 21, 9:17 AM
RyanGlScott added a comment to D5057: [WIP] Remove Haddock tokens from the grammar.

This is a really cool patch—thanks for working on this.

Fri, Sep 21, 7:56 AM
RyanGlScott added a comment to D5167: Improve generated `GHC.Prim` docs.

This is cool stuff! One thing that would help is to update the relevant Trac tickets with a link to this patch—I almost missed seeing it entirely.

Fri, Sep 21, 6:00 AM

Thu, Sep 20

RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

And perhaps our new understanding may help to minimise the different code paths for data and newtype constructors?

Thu, Sep 20, 9:45 AM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

I decided to check if there were any nofib differences in the Compile Allocations section, but thankfully, there were none. Then again, I'm not sure if the programs in nofib really make use of the sort of design patterns that this patch is trying to accommodate, but it's at least comforting to have one set of benchmarks pass with flying colors.

Thu, Sep 20, 9:45 AM

Wed, Sep 19

RyanGlScott added inline comments to D5148: Fix #15637 by using VTA more in GND.
Wed, Sep 19, 3:10 AM

Tue, Sep 18

RyanGlScott updated the diff for D5159: Quantify class variables first in associated families' kinds.
  • Actually check in expected stdout
Tue, Sep 18, 6:18 PM
RyanGlScott added inline comments to D5148: Fix #15637 by using VTA more in GND.
Tue, Sep 18, 6:18 PM
RyanGlScott updated the diff for D5148: Fix #15637 by using VTA more in GND.
  • Define, use partitionInvisibles
Tue, Sep 18, 6:18 PM
RyanGlScott updated the diff for D5159: Quantify class variables first in associated families' kinds.
  • It's all about the visible kind applications, baby
Tue, Sep 18, 5:43 PM
RyanGlScott created D5159: Quantify class variables first in associated families' kinds.
Tue, Sep 18, 3:06 PM
RyanGlScott added a comment to D5148: Fix #15637 by using VTA more in GND.

The code you point to is jolly hard to understand

Tue, Sep 18, 2:13 PM
RyanGlScott updated the diff for D5148: Fix #15637 by using VTA more in GND.
Tue, Sep 18, 2:13 PM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

Did it work?

Tue, Sep 18, 1:51 PM
RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

Bah. I just realized there's yet another place where coverage-checking for newtypes and strict, single-constructor data types differs (and changing the coverage-checker behavior to newtypes to use nonVoid would destroy this difference). Consider this code:

Tue, Sep 18, 8:04 AM

Fri, Sep 14

RyanGlScott added a comment to D5148: Fix #15637 by using VTA more in GND.

It's just an efficiency thing.

Fri, Sep 14, 12:37 PM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

I've implemented my two performance optimizations—see checkAllNonVoid and definitelyInhabitedType. Let's see if Harbormaster likes this...

Fri, Sep 14, 11:16 AM
RyanGlScott updated the diff for D5116: Add a recursivity check in nonVoid.
  • Two performance optimizations
Fri, Sep 14, 11:16 AM
RyanGlScott added inline comments to D5148: Fix #15637 by using VTA more in GND.
Fri, Sep 14, 10:11 AM
RyanGlScott requested review of D5148: Fix #15637 by using VTA more in GND.

I went ahead and applied my own suggestion from https://phabricator.haskell.org/D5148#141615, which solves the issue. This required shuffling around some code in Type, so I would appreciate another round of review.

Fri, Sep 14, 8:37 AM
RyanGlScott updated the diff for D5148: Fix #15637 by using VTA more in GND.
  • Refactor, use filterOutInferredTypes
Fri, Sep 14, 8:37 AM
RyanGlScott accepted D5151: Fix T15502 on 32-bit.

Looks great!

Fri, Sep 14, 7:47 AM
RyanGlScott added a comment to D5151: Fix T15502 on 32-bit.

Oh dear, I forgot all about architecture size differences. My bad.

Fri, Sep 14, 7:36 AM

Thu, Sep 13

RyanGlScott added a comment to D5148: Fix #15637 by using VTA more in GND.

Ack. I know what why this is happening—it's because filterOutInvisibleTypes is the wrong choice of function here. Given the class from T11833:

Thu, Sep 13, 7:16 PM
RyanGlScott planned changes to D5116: Add a recursivity check in nonVoid.

Bumping out of review queue pending the changes mentioned in https://phabricator.haskell.org/D5116#141562.

Thu, Sep 13, 5:56 PM
RyanGlScott planned changes to D5148: Fix #15637 by using VTA more in GND.

It's hard to tell (since Harbormaster failed for other reasons), but this patch actually introduced some test suite failures (such as T11833):

Thu, Sep 13, 5:51 PM
RyanGlScott created D5148: Fix #15637 by using VTA more in GND.
Thu, Sep 13, 10:53 AM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

When is (T a1..an) DI? As you say, I think it is DI if

  • At least one constructor that
  • has no equality constraints (reason: they might be unsatisfiable)
  • and all its strict fields are DI

    That is nearly what you said, but it's fine for it to have strict fields provided they are DI.
Thu, Sep 13, 7:57 AM

Fri, Sep 7

RyanGlScott added a comment to D5124: Refactor Foreign.Marshal modules for more modern style.
In D5124#141226, @osa1 wrote:

One of the reasons why I wanted reviews for this patch is because it changes visible arities of some definitions (e.g. pooledReallocArray previously had arity 0, now it has arity 3) and that may effect inlining decisions.

Fri, Sep 7, 8:29 AM

Thu, Sep 6

RyanGlScott updated the diff for D5116: Add a recursivity check in nonVoid.
  • Micro-optimizations
Thu, Sep 6, 9:38 AM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

It's a *per-tycon* recursion depth. So it stops after you've seen a particular T 100 times. If you see S, then T, then R, a depth of 1 is fine. And that's the typical case.

The main reason for wanting non-1 linit is tuples, You might have (A, B), and data A = MkA (C, D). So to dive into C you'll have see (,) twice. I think I speculated with non counting tuples at all, but concluded that was just too weird.

Thu, Sep 6, 9:10 AM

Wed, Sep 5

RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

Using a maximum recursion depth of 1 does indeed seem to work around the problem locally. Let's see if Harbormaster agrees...

Wed, Sep 5, 6:32 PM
RyanGlScott updated the diff for D5116: Add a recursivity check in nonVoid.
  • Use max recursion depth of 1
Wed, Sep 5, 6:32 PM
RyanGlScott added a comment to D5116: Add a recursivity check in nonVoid.

Ah, so one thing just occurred to me—there is some multi-way branching going on. In particular, consider the definition of the TypeRep data type from Data.Typeable.Internal:

Wed, Sep 5, 5:22 PM
RyanGlScott planned changes to D5116: Add a recursivity check in nonVoid.

@simonpj, I've applied your suggestion. Alas, the occasional infinite loops still seem to persist, and I haven't been able to diagnose why.

Wed, Sep 5, 1:06 PM
RyanGlScott updated the diff for D5116: Add a recursivity check in nonVoid.
Wed, Sep 5, 1:06 PM

Tue, Sep 4

RyanGlScott added a comment to D5128: Remove outdated note in StaticPointers documentation.

Oh, my apologies. I completely misunderstood the scope of the fix for Trac #12356—I didn't realize that one still couldn't enter static expressions in the GHCi REPL.

Tue, Sep 4, 12:52 PM
RyanGlScott added a comment to D5128: Remove outdated note in StaticPointers documentation.

before Trac #12356 static pointers were not supported in ghci at all.

Tue, Sep 4, 12:19 PM
RyanGlScott accepted D5128: Remove outdated note in StaticPointers documentation.

Parche bueno.

Tue, Sep 4, 12:03 PM

Sun, Sep 2

RyanGlScott accepted D1979: Add support for ImplicitParams and RecursiveDo in TH.

Indeed, I think this is ready to land. (The Linux Harbormaster build seemed to fail on the TH_recursiveDo test for some reason, but since the OS X build did not fail on this, I'm guessing that this is a spurious failure.)

Sun, Sep 2, 7:19 AM

Thu, Aug 30

RyanGlScott planned changes to D5116: Add a recursivity check in nonVoid.

Ack, something is very wrong here—I seem to have caused the build to die with an out-of-memory error. (I simply rebuilt instead of doing a full ./validate, which I why I didn't realize this earlier.) Something must be leaking memory like crazy...

Thu, Aug 30, 6:34 PM
RyanGlScott planned changes to D5094: Normalise EmptyCase types using the constraint solver.

So I could argue that it's a *worse* error because it suggests adding more of a pattern than is needed. Or am I missing something, again?

Thu, Aug 30, 5:42 PM
RyanGlScott added a comment to D5068: Reject class instances with type families in kinds.

I've pushed a change which improves the overall quality of these sorts of error messages. Let me know what you think.

Thu, Aug 30, 1:45 PM
RyanGlScott updated the diff for D5068: Reject class instances with type families in kinds.
  • Improve them error messages
Thu, Aug 30, 1:44 PM
RyanGlScott created D5116: Add a recursivity check in nonVoid.
Thu, Aug 30, 12:27 PM
RyanGlScott planned changes to D5068: Reject class instances with type families in kinds.
Thu, Aug 30, 11:18 AM
RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

A simple way might be to use the existing RecTc mechanism at the bottom of TyCon.hs. We'd bale out (giving a conservative answer) if we encountered the same TyCon twice. (Or, in those circumstances we could bale out saying "definitely bottom" -- which would give the right answer for Abyss in the comment, but at the price of very occasionally not warning when we should.)

Doing this would (I think) be simple, would do the right thing in more cases, and would make newtypes simple. Worth considering?

Thu, Aug 30, 11:12 AM

Tue, Aug 28

RyanGlScott accepted D5114: Update hsc2hs submodule.
Tue, Aug 28, 12:57 PM
RyanGlScott added a comment to D5114: Update hsc2hs submodule.

The payload of this patch is fine. However, there is a git commit message linter that GHC uses which will reject any commits which update submodules that do not mention the word "submodule" somewhere in the commit message. Change the Diff description to incorporate "submodule" in some way, and this will be perfect.

Tue, Aug 28, 11:44 AM
RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

Do we agree that f3 above will behave correctly as far as coverage checking is concerned, at least after your recent nonVoid patch?

Tue, Aug 28, 11:41 AM
RyanGlScott added inline comments to D5068: Reject class instances with type families in kinds.
Tue, Aug 28, 8:55 AM
RyanGlScott added a comment to D5094: Normalise EmptyCase types using the constraint solver.

But what about

data    StrictVoidData    = MkVoidData    !Void

f3 :: StructVoidData -> a
f3 x = case x of {}

This too is exhaustive. But it's not a newtype.

Tue, Aug 28, 8:53 AM
RyanGlScott added inline comments to D5108: Rename kind vars in left-to-right order in bindHsQTyVars.
Tue, Aug 28, 8:41 AM
RyanGlScott updated the diff for D5108: Rename kind vars in left-to-right order in bindHsQTyVars.
Tue, Aug 28, 8:41 AM
RyanGlScott added a comment to D5112: Fix #15572 by checking for promoted names in ConT.

Oops! Good catch. I've checked it in now.

Tue, Aug 28, 6:13 AM
RyanGlScott updated the diff for D5112: Fix #15572 by checking for promoted names in ConT.
  • Check in test file
Tue, Aug 28, 6:13 AM

Mon, Aug 27

RyanGlScott created D5112: Fix #15572 by checking for promoted names in ConT.
Mon, Aug 27, 1:58 PM
RyanGlScott updated the diff for D5094: Normalise EmptyCase types using the constraint solver.

Rebase on top of master

Mon, Aug 27, 9:54 AM
RyanGlScott added inline comments to D5108: Rename kind vars in left-to-right order in bindHsQTyVars.
Mon, Aug 27, 8:38 AM
RyanGlScott updated the diff for D5108: Rename kind vars in left-to-right order in bindHsQTyVars.
Mon, Aug 27, 8:38 AM

Aug 26 2018

RyanGlScott created D5108: Rename kind vars in left-to-right order in bindHsQTyVars.
Aug 26 2018, 8:50 AM

Aug 25 2018

RyanGlScott added a comment to D5054: Coercion Quantification.

Thanks for adding Note [Existential coercion variables], although I now have even more questions after reading it. :)

Aug 25 2018, 6:07 PM

Aug 24 2018

RyanGlScott accepted D5104: Fix #10859 by using foldr1 while deriving Eq instances.

Gotta love one-character bugfixes.

Aug 24 2018, 12:32 PM
RyanGlScott added inline comments to D5068: Reject class instances with type families in kinds.
Aug 24 2018, 9:22 AM
RyanGlScott added inline comments to D5094: Normalise EmptyCase types using the constraint solver.
Aug 24 2018, 9:22 AM
RyanGlScott updated the diff for D5094: Normalise EmptyCase types using the constraint solver.
  • Don't export pmIsClosedType, pmTopNormaliseType_maybe
Aug 24 2018, 9:22 AM

Aug 23 2018

RyanGlScott added a comment to D5087: Take strict fields into account in coverage checking.

In that case, I believe I've addressed all of your concerns now. Is this patch ready to land?

Aug 23 2018, 6:11 PM
RyanGlScott added inline comments to D5094: Normalise EmptyCase types using the constraint solver.
Aug 23 2018, 6:11 PM
RyanGlScott updated the diff for D5094: Normalise EmptyCase types using the constraint solver.
Aug 23 2018, 6:11 PM
RyanGlScott added inline comments to D5087: Take strict fields into account in coverage checking.
Aug 23 2018, 5:28 PM
RyanGlScott updated the diff for D5087: Take strict fields into account in coverage checking.
Aug 23 2018, 5:28 PM
RyanGlScott accepted D5095: Remove dph, vector, primitive and random from .gitmodules.
Aug 23 2018, 11:31 AM
RyanGlScott added inline comments to D5094: Normalise EmptyCase types using the constraint solver.
Aug 23 2018, 10:14 AM
RyanGlScott created D5094: Normalise EmptyCase types using the constraint solver.
Aug 23 2018, 9:59 AM
RyanGlScott added inline comments to D5087: Take strict fields into account in coverage checking.
Aug 23 2018, 9:12 AM
RyanGlScott updated the diff for D5087: Take strict fields into account in coverage checking.
Aug 23 2018, 9:11 AM
RyanGlScott accepted D5092: base: Add references to Notes for certain special imports.
Aug 23 2018, 8:44 AM
RyanGlScott updated the diff for D5089: Fix #15502 by not casting to Int during TH conversion.
  • Reference mkIntegralLit
Aug 23 2018, 8:05 AM

Aug 22 2018

RyanGlScott added inline comments to D5087: Take strict fields into account in coverage checking.
Aug 22 2018, 5:38 PM
RyanGlScott updated the diff for D5087: Take strict fields into account in coverage checking.
Aug 22 2018, 5:38 PM
RyanGlScott added inline comments to D5089: Fix #15502 by not casting to Int during TH conversion.
Aug 22 2018, 5:04 PM
RyanGlScott updated the diff for D5089: Fix #15502 by not casting to Int during TH conversion.
  • Explain why mkFractionalLit is the way it is
Aug 22 2018, 5:04 PM
RyanGlScott added a comment to D5087: Take strict fields into account in coverage checking.

OK, now things should be good to go.

Aug 22 2018, 2:38 PM
RyanGlScott updated the diff for D5087: Take strict fields into account in coverage checking.
  • Skip abstract tycons in inhabitationCandidates
Aug 22 2018, 2:38 PM
RyanGlScott planned changes to D5087: Take strict fields into account in coverage checking.

Ack, I should have ran ./validate before submitting, since I failed to take into account that data types that are {-# SOURCE #-} imported from .hs-boot files (like the imported DynFlags in Outputable) appear different to the coverage checker than non-{-# SOURCE #-}-imported things, since tyConDataCons returns different things for them. I think I can work around this pretty easily, though.

Aug 22 2018, 2:06 PM
RyanGlScott committed rNOFIB7cbfbbed8b6d: Make lambda fit for MFP (authored by sgraf).
Make lambda fit for MFP
Aug 22 2018, 1:34 PM
RyanGlScott closed D5058: Make lambda fit for MFP.
Aug 22 2018, 1:34 PM
RyanGlScott created D5090: Fix #15550 by quoting RULE names during TH conversion.
Aug 22 2018, 1:14 PM
RyanGlScott added inline comments to D5089: Fix #15502 by not casting to Int during TH conversion.
Aug 22 2018, 1:02 PM