Personal tools

HacPDX/Projects

From HaskellWiki

< HacPDX(Difference between revisions)
Jump to: navigation, search
Line 71: Line 71:
 
size :: d -> Int -- Size of a digest
 
size :: d -> Int -- Size of a digest
 
extract :: d -> ByteString
 
extract :: d -> ByteString
initial :: s
+
-- Initial state of the hash function. Dependent on the length of the
  +
-- message. Maybe we should let the hash function determine the precision
  +
-- or absence of the length.
  +
initial :: Word64 -> s
 
-- Chunkwise hashing. Needed to implement efficient hashing of lazy
 
-- Chunkwise hashing. Needed to implement efficient hashing of lazy
 
-- bytestrings and efficient hashing of streams in general. OOH, an
 
-- bytestrings and efficient hashing of streams in general. OOH, an

Revision as of 07:08, 26 September 2009

Contents

1 Proposed Projects for HacPDX

Projects you intend to tackle.

Project Task Description Participants
Network APIs Investigate and test new APIs for potentially replacing network, network-bytestring, and network-fancy TomMD
HPDF Additional hacking and c bindings jmelesky
HUnit GUI. Maybe also text UI that isn't horrible KimWallmark

2 Additional Project Suggestions

Projects you'd consider, but depends on the interest of other attendees.

Project Task Description
Crypto Part I Fix up the crypto library - use bytestring, fold in pureMD5/SHA/hecc, provide a new API
PNG Work on Bart Massey's pure-Haskell PNG reading/writing library. Lots to do here.
ParseArgs Clean up and extend a bit Bart Massey's parseargs package.
TCP Service Extract and package the SMTP-style TCP server bits from Bart Massey's MiniChess server.
sqlite open_v2() Add full support for SQlite's open_v2() call to the sqlite package.
HaRe Get it compiling under ghc 6.10; cabalize it.
plugins Tests and examples seem to fail with linking errors on the latest Haskell Platform.
wxHaskell Get this to install on Arch Linux.
Kernel Modules Finish porting a Linux driver to Haskell (mostly means working on the c2hs bindings)
Whiteout I - Echo Nolan - have been working on a BitTorrent client library. It uses fun things like iteratees and STM. If anyone is interested in hearing about/working on it, I'm more than happy to give the guided tour.
Lambdabot Everyone's favorite Haskell IRC bot.

3 Crypto 5.0 notes

TomMD's design for a digest class. From memory.

class Digest d s | d -> s where
-- Associated types are the new hotness. Should we be using them?
    size :: d -> Int -- Size of a digest
    extract :: d -> ByteString
    -- Initial state of the hash function. Dependent on the length of the
    -- message. Maybe we should let the hash function determine the precision
    -- or absence of the length.
    initial :: Word64 -> s
    -- Chunkwise hashing. Needed to implement efficient hashing of lazy
    -- bytestrings and efficient hashing of streams in general. OOH, an
    -- application for iteratees! Hooray!
    hashsome :: ByteString -> s -> s
    finalize :: s -> d
 
hash :: Digest d s => ByteString -> d
hash bs = finalize $ hashsome bs initial
 
newtype SHA1 = SHA1 ByteString
instance Digest SHA1 SHA1State where
  --Code goes here...

And similarly for block/stream ciphers and RNGs. Also, slurp up the various other crypto libs on hackage.

3.1 Other todos

  • Add website and darcs repo to Crypto.cabal.
  • Use test-framework.
  • Don't build tests by default - use a flag.
  • Is [email protected] still the correct contact email? If not, change it in CryptoHomePage.html
  • Does the readme *really* have to be in TeX?
  • Get a real bugtracker set up? code.haskell.org gives out trac hosting.
  • Holy crap that is a lot of warnings.
  • QuickCheck 2?
  • Echo hates Darcs with a passion.