(type egg)
(signature "isaac egg")
(timestamp 1612269487)
(sxml ((section 2 "Outdated egg!" (p "This is an egg for CHICKEN 4, the unsupported old release.  You're almost certainly looking for " (int-link "/eggref/5/isaac" "the CHICKEN 5 version of this egg") ", if it exists.") (p "If it does not exist, there may be equivalent functionality provided by another egg; have a look at the " (link "https://wiki.call-cc.org/chicken-projects/egg-index-5.html" "egg index") ". Otherwise, please consider porting this egg to the current version of CHICKEN.") (tags "egg")) (section 2 "isaac" (toc)) (section 2 "Description" (p "Bindings to Bob Jenkins' " (link "https://burtleburtle.net/bob/rand/isaacafa.html" "ISAAC CSPRNG") ".") (p "The source for this extension is available " (link "https://git.foldling.org/chicken-isaac.git" "here") ".")) (section 2 "Requirements" (ul (li (int-link "module-declarations")))) (section 2 "API" (p "A single function is provided, which creates a new random procedure:") (def (sig (procedure "(make-isaac #!optional (seed (make-blob SEED)))" (id make-isaac))) (p "Creates a new ISAAC instance.") (p "The result is a procedure of no arguments that returns a random fixnum value on each invocation.") (p (tt "seed") " is used to initialize the procedure's stream of random values. If given, it should be a blob of size 2048. If not given, a block of uninitialized memory will be used.") (p "If cryptographic security is desired, " (tt "seed") " should itself be the result of some secure random source. On Linux and BSD, 2048 bytes from \"/dev/urandom\" or \"/dev/arandom\" will suffice."))) (section 2 "Examples" (highlight scheme "#;> (use isaac)\n#;> (define isaac (make-isaac))\n#;> (isaac)\n1659971739\n#;> (isaac)\n4077212320\n#;> (isaac)\n1011352789")) (section 2 "Author" (p (int-link "/users/evan-hanson" "Evan Hanson"))) (section 2 "License" (p "Public Domain"))))
