dfeuer (David Feuer)Administrator
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 5 2014, 5:38 PM (206 w, 16 h)
Roles
Administrator

Recent Activity

Fri, Aug 3

dfeuer accepted D5038: CSE should deal with letrec.

Much better!

Fri, Aug 3, 4:17 AM

Thu, Aug 2

dfeuer requested changes to D5038: CSE should deal with letrec.

I think there should also be one or two tests that don't rely on all the details of this particular case. To begin with, there should surely be a simple example of defining the same recursive function twice with different names.

Thu, Aug 2, 12:22 PM

Thu, Jul 26

dfeuer added a reverting change for D3001: Make tickishContains faster: rGHCDIFF99f818282673: Partially revert D3001.
Thu, Jul 26, 6:26 PM

Sat, Jul 21

dfeuer committed rGHC5a49651f3161: Harden fixST (authored by dfeuer).
Harden fixST
Sat, Jul 21, 2:47 PM
dfeuer closed D4948: Harden fixST.
Sat, Jul 21, 2:47 PM

Jul 18 2018

dfeuer added a comment to D4967: Use a priority queue for Windows delays.

@Phyx should have a look at this. Also, can you run a benchmark? It's easy to make things theoretically faster but practically slower.

I believe there were people working on porting the IO manager to Windows which would presumably make this redundant, but I'm not sure what the status of those efforts is, perhaps @Phyx knows.

Jul 18 2018, 7:48 AM

Jul 17 2018

dfeuer added a comment to D4967: Use a priority queue for Windows delays.

@simonmar, I see what you likely mean about the PSQ implementation now: it has the advantage of being specialized to fixed-width priorities. We could probably find/create something similarly appropriate for the Windows module, but I don't have the time to invest in it right now (note: we'd need something with a merge operation to maintain the current behavior; the PSQs here don't currently have one).

Jul 17 2018, 7:04 PM
dfeuer updated the diff for D4967: Use a priority queue for Windows delays.

Another fixup

Jul 17 2018, 4:56 PM

Jul 16 2018

dfeuer updated the diff for D4967: Use a priority queue for Windows delays.

Fix -Wall

Jul 16 2018, 1:39 PM
dfeuer updated the diff for D4967: Use a priority queue for Windows delays.

Remove module import cycle

Jul 16 2018, 12:22 PM
dfeuer updated the diff for D4967: Use a priority queue for Windows delays.

Fix module name; add documentation.

Jul 16 2018, 9:48 AM
dfeuer added a comment to D4967: Use a priority queue for Windows delays.

It doesn't look like this compiles.

Did you consider using GHC.Event.PSQ instead?

Jul 16 2018, 6:57 AM

Jul 15 2018

dfeuer created D4967: Use a priority queue for Windows delays.
Jul 15 2018, 12:47 PM
dfeuer committed rGHCaf9b744bbf1c: Replace atomicModifyMutVar# (authored by dfeuer).
Replace atomicModifyMutVar#
Jul 15 2018, 9:19 AM
dfeuer closed D4884: Replace atomicModifyMutVar#.
Jul 15 2018, 9:19 AM

Jul 14 2018

dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jul 14 2018, 8:36 PM

Jul 13 2018

dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Restore original semantics
Jul 13 2018, 10:05 PM
dfeuer added a comment to D4884: Replace atomicModifyMutVar#.

I've restored the original semantics for now. We can revisit that later. The latest version is less aggressive, but at least shouldn't have the earlier regression.

Jul 13 2018, 10:05 PM
dfeuer added a comment to D4884: Replace atomicModifyMutVar#.

I just realized my last change makes a slight semantic difference, but one I expect is probably tolerable. With the old version,

Jul 13 2018, 3:52 PM
dfeuer requested review of D4884: Replace atomicModifyMutVar#.

@simonmar, I realized last night that my nice, simple definition of atomicModifyIORef' could lead to extra thunks in certain cases. I believe I've cleaned that up, but I'd appreciate a second look.

Jul 13 2018, 2:01 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Tweak the definition of atomicModifyIORef'
Jul 13 2018, 1:48 PM

Jul 12 2018

dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jul 12 2018, 10:33 PM
dfeuer added a comment to D4884: Replace atomicModifyMutVar#.

For atomicSwapMutVar# it looks like we don't have the right primitive in Cmm yet, namely %xchg. I suppose we could defer that for a separate diff?

What testing do we have for atomicModifyIORef and friends? It would be good to have some tests to check the strictness properties at least.

Jul 12 2018, 11:10 AM
dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jul 12 2018, 11:07 AM

Jul 11 2018

dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Fix atomicModifyIORef' strictness

Jul 11 2018, 5:49 PM
dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jul 11 2018, 5:17 PM
dfeuer updated the summary of D4884: Replace atomicModifyMutVar#.
Jul 11 2018, 2:44 PM
dfeuer added a comment to D4884: Replace atomicModifyMutVar#.

@simonmar, @fryguybob, I've implemented atomicModifyMutVar2# and atomicModifyMutVar_#, but I could use some help with atomicSwapMutVar#. Could one of you give me a hand?

Jul 11 2018, 2:18 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Implement atomicModifyMutVar_#, change some names, and remove the
unaccepted additions to Data.IORef.

Jul 11 2018, 2:13 PM

Jul 10 2018

dfeuer updated the diff for D4948: Harden fixST.
  • Back out lazy ST changes
Jul 10 2018, 3:59 PM
dfeuer updated the diff for D4948: Harden fixST.
  • Back out lazy ST changes
Jul 10 2018, 3:55 PM
dfeuer planned changes to D4948: Harden fixST.

Oh, bleh! I just realized my lazy version is still wrong. It's too strict sometimes, and I think it can also have trouble from the putMVar not actually happening. What a mess....

Jul 10 2018, 2:09 PM
dfeuer added a comment to D4948: Harden fixST.

Can you add a test please?

Jul 10 2018, 1:39 PM
dfeuer updated the diff for D4948: Harden fixST.
  • Fix lazy ST; add tests
Jul 10 2018, 1:39 PM

Jul 9 2018

dfeuer created D4948: Harden fixST.
Jul 9 2018, 1:13 PM

Jun 29 2018

dfeuer committed rGHC6bb0c5db818c: Don't lock the MVar closure on tryReadMVar (authored by dfeuer).
Don't lock the MVar closure on tryReadMVar
Jun 29 2018, 1:33 PM
dfeuer closed D4905: Don't lock the MVar closure on tryReadMVar.
Jun 29 2018, 1:33 PM
dfeuer added a reviewer for D4905: Don't lock the MVar closure on tryReadMVar: fryguybob.
Jun 29 2018, 1:03 PM

Jun 28 2018

dfeuer planned changes to D4899: Reimplement Control.Concurrent.Chan.

I'm getting very inconsistent benchmark results. This does much better and much worse than the current implementation depending on the situation, and I don't yet understand why.

Jun 28 2018, 11:48 PM
dfeuer created D4905: Don't lock the MVar closure on tryReadMVar.
Jun 28 2018, 10:07 PM

Jun 27 2018

dfeuer updated the diff for D4899: Reimplement Control.Concurrent.Chan.
  • Put back one MVar
Jun 27 2018, 10:26 PM
dfeuer updated the summary of D4899: Reimplement Control.Concurrent.Chan.
Jun 27 2018, 10:15 PM
dfeuer updated the diff for D4899: Reimplement Control.Concurrent.Chan.
  • Put back one MVar
Jun 27 2018, 10:05 PM
dfeuer added a reviewer for D4899: Reimplement Control.Concurrent.Chan: RyanGlScott.
Jun 27 2018, 1:23 AM
dfeuer created D4899: Reimplement Control.Concurrent.Chan.
Jun 27 2018, 1:02 AM

Jun 25 2018

dfeuer added a comment to D4896: Use an IORef for QSemN.

While the code no longer uses uninterruptibleMask, it remains possible for contention to lead to a thread being unkillable for a time. It's always possible for a thread to be descheduled between performing its atomicModifyIORef and forcing the result. In that case, it will leave a thunk in the IORef. In particular, signalQSemN can leave a good chunk of reversing work behind (it can also leave dead-thread-skipping work behind, but I think it's probably reasonable to assume there won't be too much of that). I don't think there's any way to give an absolute guarantee that no thread will be unkillable for long, but if that's an important goal, I think we can get pretty close by using a non-amortized queue. At first, I thought maybe we could just force the IORef contents at the beginning of each waitQSemN (before masking) but that would violate the ordering guarantee: threads attempting waitQSemN while an expensive thunk was being evaluated would be reordered arbitrarily. I don't know if the benefits of a fancier queue would be worth the price.

Jun 25 2018, 7:45 PM
dfeuer updated the diff for D4742: Unpack and simplify QSem.
  • Use an IORef for QSem
Jun 25 2018, 5:36 PM
dfeuer created D4896: Use an IORef for QSemN.
Jun 25 2018, 5:36 PM
dfeuer updated the diff for D4742: Unpack and simplify QSem.
  • Use an IORef for QSem
Jun 25 2018, 3:32 PM
dfeuer added a comment to D4742: Unpack and simplify QSem.

@simonmar, I just made a much bigger change that you're likely to find interesting. Note that uninterruptibleMask is gone now.

Jun 25 2018, 2:56 PM
dfeuer updated the diff for D4742: Unpack and simplify QSem.
  • Use an IORef for QSem
Jun 25 2018, 2:47 PM
dfeuer added inline comments to D4742: Unpack and simplify QSem.
Jun 25 2018, 1:09 PM
dfeuer added a comment to D4886: Don't allocate in atomicWriteIORef.

A test does sound like a good idea.

Jun 25 2018, 7:52 AM
dfeuer added inline comments to D4886: Don't allocate in atomicWriteIORef.
Jun 25 2018, 6:04 AM

Jun 23 2018

dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 10:34 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 9:14 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 7:41 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 7:37 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 7:22 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Return old value too
Jun 23 2018, 5:10 PM
dfeuer added reviewers for D4886: Don't allocate in atomicWriteIORef: simonmar, fryguybob.
Jun 23 2018, 2:29 PM
dfeuer updated the summary of D4884: Replace atomicModifyMutVar#.
Jun 23 2018, 2:08 PM
dfeuer updated the diff for D4887: Implement atomicWriteIORef primitively.
  • Take fryguybob's suggestion
  • Rename
Jun 23 2018, 2:01 AM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.
  • Implement fryguybob's suggestion
Jun 23 2018, 1:47 AM
dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jun 23 2018, 1:33 AM

Jun 22 2018

dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jun 22 2018, 11:33 PM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.
  • atomicReplaceIORef
Jun 22 2018, 5:37 PM
dfeuer updated the diff for D4887: Implement atomicWriteIORef primitively.

Fix mistakes

Jun 22 2018, 4:58 PM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.

Fix Windows mistake

Jun 22 2018, 4:58 PM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.

Fix mistake

Jun 22 2018, 4:58 PM
dfeuer updated the summary of D4886: Don't allocate in atomicWriteIORef.
Jun 22 2018, 4:05 PM
dfeuer updated the summary of D4887: Implement atomicWriteIORef primitively.
Jun 22 2018, 4:05 PM
Herald added a reviewer for D4887: Implement atomicWriteIORef primitively: bgamari.
Jun 22 2018, 4:05 PM
dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jun 22 2018, 3:42 PM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.

Add needed extension

Jun 22 2018, 3:05 PM
dfeuer added inline comments to D4884: Replace atomicModifyMutVar#.
Jun 22 2018, 3:05 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Tweak

Jun 22 2018, 2:25 PM
dfeuer updated the diff for D4886: Don't allocate in atomicWriteIORef.

Remove now-unnecessary seq

Jun 22 2018, 2:25 PM
dfeuer added a comment to D4886: Don't allocate in atomicWriteIORef.

Question: might some programs be *relying* on allocation in atomicWriteIORef to yield? If so, should we insert a yield right at the beginning?

Jun 22 2018, 2:17 PM
dfeuer created D4886: Don't allocate in atomicWriteIORef.
Jun 22 2018, 2:17 PM
dfeuer added a comment to D4884: Replace atomicModifyMutVar#.

The commit title and summary don't really tell me what this does - can you say what the goal is here? Is there a ticket?

Jun 22 2018, 11:36 AM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Update stat (too good)

Jun 22 2018, 2:53 AM

Jun 21 2018

dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.
  • Fix up Windows-specific code
Jun 21 2018, 11:52 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Remove unused binding

Jun 21 2018, 9:52 PM
dfeuer updated the diff for D4884: Replace atomicModifyMutVar#.

Update docs; clean up

Jun 21 2018, 8:49 PM
dfeuer created D4884: Replace atomicModifyMutVar#.
Jun 21 2018, 8:37 PM

Jun 20 2018

dfeuer requested changes to D4847: UniqFM: Use foldl' instead of fold.
Jun 20 2018, 9:03 PM

Jun 18 2018

dfeuer added a comment to D4866: Check if files are same in combineSrcSpans.

Yes, that. But do you really need such fancy logic in the test? Wouldn't something much simpler (like a type error) do the trick? Then you wouldn't have to deal with -ddump-parsed-ast.

Jun 18 2018, 3:04 PM
dfeuer requested changes to D4866: Check if files are same in combineSrcSpans.

Can you add a test case?

Jun 18 2018, 1:51 PM
dfeuer accepted D4868: Rewrite fasta in more idiomatic Haskell.

Although it's unfortunate to change benchmark source in general, I think it's pretty clearly justified this time.

Jun 18 2018, 1:51 PM

Jun 17 2018

dfeuer created D4864: Bump containers to v0.6.0.1.
Jun 17 2018, 10:32 PM

Jun 11 2018

dfeuer committed rGHC502026fc0a35: Make seq# evaluatedness look through casts (authored by dfeuer).
Make seq# evaluatedness look through casts
Jun 11 2018, 9:35 AM
dfeuer closed D4804: Make seq# evaluatedness look through casts.
Jun 11 2018, 9:35 AM
dfeuer updated the diff for D4804: Make seq# evaluatedness look through casts.
  • Add output
Jun 11 2018, 9:25 AM

Jun 7 2018

dfeuer requested changes to D4812: Add Foldable1 from package 'semigroupoids' to base.

I believe this change needs a formal libraries list proposal.

Jun 7 2018, 1:52 PM

Jun 6 2018

dfeuer accepted D4776: desugar: Rip out unsafeGlobalDynFlags usage in decomposeRuleLhs.

Yup!

Jun 6 2018, 10:38 PM
dfeuer created D4804: Make seq# evaluatedness look through casts.
Jun 6 2018, 3:29 PM
dfeuer committed rGHCd964b054d530: Let the simplifier know that seq# forces (authored by dfeuer).
Let the simplifier know that seq# forces
Jun 6 2018, 2:53 PM
dfeuer closed D4796: Let the simplifier know that seq# forces.
Jun 6 2018, 2:53 PM
dfeuer accepted D4802: testsuite: Skip T13838 in ghci way.

Yeah, that sounds reasonable. Not ideal, perhaps, but there's no obvious and easy way to make GHCi fail this without really reworking the test.

Jun 6 2018, 2:47 PM