Custom Query (162 matches)


Show under each result:

Results (13 - 15 of 162)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Ticket Resolution Summary Owner Reporter
#48 fixed Implement the semi-tagging optimisation in GHC none simonmar@…

This is an optimisation idea for GHC.

Currently when evaluating an expression that is the scrutinee of a case:

case x of { ... }

GHC jumps to the code for the x closure, which returns when x is evaluated. Commonly, x is already evaluated, and the code for an evaluated constructor just returns immediately. The idea is to encode the fact that a pointer points to an evaluated object by setting the LSB of the pointer. If the case expression detects that the closure is evaluated, it can avoid the jump and return, which are expensive on modern processors (indirect jumps).

We can go a bit further than this, too. Since there are 2 spare bits (4 on a 64-bit machine), we can encode 4 (16) states. Taking 0 to mean "unevaluted", that leaves 3 (15) states to encode the values for the "tag" of the constructor. eg. an evaluated Bool would use 1 to indicate False and 2 to indicate True. An evaluated list cell would use 1 to indicate [] and 2 to indicate (:).

The nice thing about the current approach is that code size is small; implementing the test and jump will certainly add extra code to compiled case expressions. But the gains might be worth it. Complexity-wise this means masking out these bits when following any pointer to a heap object, which means carefully checking most of the runtime.

Interested Mentors

  • Lemmih <lemmih@…>
  • Simon Marlow <simonmar@…>

Interested Students

  • Leon P Smith <leon.p.smith@…>
#54 fixed A model for client-side scripts with HSP none nibro@…

HSP is a framework for writing dynamic web pages, with emphasis on server-side dynamics. It would be useful to also have a way to specify scripts that should be run on the client, e.g. by clever generation of JavaScript code through a combinator library. The point is to create a model that, to the programmer, looks and feels like Haskell, but that can be executed as JavaScript on the client.

Interested Mentors

  • Niklas Broberg (nibro) <nibro@…>

Interested Students

  • ?
#56 fixed Allegro binding michael@…

Allegro <> is a very capable C-library for games development. It does everything from packed files to sound to graphics. The way the library is set up makes it a good target for a haskell binding.

OpenGL can interact with Allegro through allegroGL. this could be added as well if time allows.

Difficulity: Low but potentially much work. Will learn FFI, potentially c2hs and some about games programming

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Note: See TracQuery for help on using queries.