Difference between revisions of "HacPDX/Projects"

From HaskellWiki
Jump to navigation Jump to search
Line 68: Line 68:
   
 
==Crypto 5.0 notes==
 
==Crypto 5.0 notes==
  +
See the patch-tag.com crypto repository files Data/Digest.hs and Data/Cipher.hs for proposed [http://patch-tag.com/r/crypto/snapshot/current/content/pretty/Data/Digest.hs Digest] and [http://patch-tag.com/r/crypto/snapshot/current/content/pretty/Data/Cipher.hs Cipher] typeclasses.
TomMD's design for a digest class. From memory.
 
<haskell>
 
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
 
   
  +
This would allow digests to be called with a simple "hash" function so long as they have an instance:
hash :: Digest d s => ByteString -> d
 
hash bs = finalize $ hashsome bs initial
 
   
 
<haskell>
newtype SHA1 = SHA1 ByteString
 
  +
newtype SHA1 = SHA1 (Word32, Word32, Word32, Word32, Word32)
instance Digest SHA1 SHA1State where
+
instance Digest SHA1 SHA1PartialCtx where
 
--Code goes here...
 
--Code goes here...
 
</haskell>
 
</haskell>

Revision as of 18:12, 26 September 2009

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
judy Fast, mutable collection types dons

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.

Crypto 5.0 notes

See the patch-tag.com crypto repository files Data/Digest.hs and Data/Cipher.hs for proposed Digest and Cipher typeclasses.

This would allow digests to be called with a simple "hash" function so long as they have an instance:

newtype SHA1 = SHA1 (Word32, Word32, Word32, Word32, Word32)
instance Digest SHA1 SHA1PartialCtx where
  --Code goes here...

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

Other todos

  • Add website and darcs repo to Crypto.cabal.
  • Use test-framework.
  • Don't build tests by default - use a flag.
  • Is dominic.steinitz@blueyonder.co.uk 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.