Personal tools

HacPDX/Projects

From HaskellWiki

< HacPDX(Difference between revisions)
Jump to: navigation, search
Line 65: Line 65:
   
 
==Crypto 5.0 notes==
 
==Crypto 5.0 notes==
TomMD's design for a digest class.
+
TomMD's design for a digest class. From memory.
 
<haskell>
 
<haskell>
class Digest d where
+
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
 
size :: d -> Int -- Size of a digest
hash :: ByteString -> d
+
extract :: d -> ByteString
  +
initial :: 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
 
newtype SHA1 = SHA1 ByteString
instance Digest SHA1 where
+
instance Digest SHA1 SHA1State where
 
--Code goes here...
 
--Code goes here...
 
</haskell>
 
</haskell>

Revision as of 06:48, 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 :: 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.