Menu

#14 larger fixnums on 64-bit platforms

closed-fixed
None
5
2005-05-26
2004-07-28
No

CLISP on 64-bit platforms has a puny 32-bit fixnums:
(integer-length most-positive-fixnum)
==> 32
this is very unfortunate: some application can start
consing unexpectedly.
even leaving a generous 16 bits for TYPECODES,
we still should be able to get 48-bit fixnums!

Discussion

  • Bruno Haible

    Bruno Haible - 2004-07-29

    Logged In: YES
    user_id=5923

    Fixnums larger than 2^31 are extremely rare. Evidence is:
    - Many Lisps work with 29-bit fixnums.
    - During 6 years of application programming, so far I have
    needed 64-bit integers only once (when doing Bresenham of
    points with 32-bit coordinates).

    Hundreds of code lines on clisp assume a fixnum's value fits in
    an uint32. It's not worth doing huge changes for a gain that is
    nearly nil.

     
  • Bruno Haible

    Bruno Haible - 2004-07-29
    • status: open --> closed-rejected
     
  • Sam Steingold

    Sam Steingold - 2004-07-29

    Logged In: YES
    user_id=5735

    Yes, large fixnums are rare,
    but this is not a good reason
    not to be better than the others.
    Besides, it appears that the 64-bit CMUCL will have
    60+ bit fixnums.
    New applications bring new challenges, see
    <http://article.gmane.org/gmane.lisp.clisp.general:8716>
    <http://article.gmane.org/gmane.lisp.clisp.general:8724>.
    48 bit fixnums would be very welcome there.

    IIUC, fixnum is assumed to fit into intL, which should be
    redefined to be int64 on 64-bit architecture.

    Remember Bill Gates "640kB should be enough for everyone"?
    Let us not repeat this!

     
  • Sam Steingold

    Sam Steingold - 2004-07-29
    • status: closed-rejected --> open
     
  • Sam Steingold

    Sam Steingold - 2004-07-29

    Logged In: YES
    user_id=5735

    <http://article.gmane.org/gmane.lisp.clisp.general:8731>:
    "a 64-bit lisp on a 64-bit machine would presumably
    have fixnum that are close to 60 bits in length"

     
  • Sam Steingold

    Sam Steingold - 2004-08-18

    Logged In: YES
    user_id=5735

    the next stage of the project I work on
    will involve drastically larger datasets.
    I will need to create huge sparce matrices.
    it would be nice if accessing it did not cons
    a new bignum for each index.
    the matrix _is_ larger than 2^32x2^32!

     
  • Sam Steingold

    Sam Steingold - 2005-05-26
    • status: open --> closed-fixed
     
  • Sam Steingold

    Sam Steingold - 2005-05-26

    Logged In: YES
    user_id=5735

    Thanks for the suggestion - it has been just implemented and
    checked into the CVS repository, and will be available in the next
    release.
    If you cannot wait for the next release, you can get the latest
    development sources from the CVS and compile them yourself.
    Please be aware that the development sources are not stable and
    might not even compile on your machine.
    You should report any problems you encounter with the CVS sources
    to the <clisp-devel> mailing list, not to the <clisp-list>.
    If you use the CVS sources, you should read <clisp-devel>
    since the CVS log goes there.

     

Log in to post a comment.