Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] int32/int64 literals in next release?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Shawn Wagner <shawnw@s...>
Subject: Re: [Caml-list] int32/int64 literals in next release?
On Wed, Nov 13, 2002 at 10:42:36PM +0100, Pierre Weis wrote:
> Hi,
> 
> > Is there any chance some way of inputing int32/int64 literals can be
> > added to the compiler for this next release?
> 
> AFAIK, this is fairly hight in the todo list.
> 

Ask, and ye shall recieve (In other words, I had a few hours to kill and
have been wanting this feature myself).

http://raevnos.pennmush.org/code/litint306-1.diff.gz

or http://raevnos.pennmush.org/code/ocaml.html in case the direct URL
doesn't work, as I might put up newer versions (-2, -3, etc.) if I fix any of
the problems noted below.

Uses a suffix to the number to indicate type, like in C. The actual suffixes
are taken from the printf formats.

With it:
% ./ocaml
        Objective Caml version 3.06

# 0;;
- : int = 0
# 0l;;
- : int32 = <int32 0>
# 0L;;
- : int64 = <int64 0>
# 0n;;
- : nativeint = <nativeint 0>
# Int32.mul 6l 7l;;
- : int32 = <int32 42>

Tested with bytecode and i386 linux native.

Problems I know about already:

* The native compiler doesn't support literal int64's, as I didn't see a place
to crib from for what to emit in cmmgen.ml after a quick look.

* int32's and nativeints on the native compiler aren't heavily tested, though
simple problems using them compile and appear to work right.

* Compiling camlp4 breaks with:
../../boot/ocamlrun ../boot/camlp4 -nolib -I ../boot ./pa_lispr.cmo
pa_extend.cmo q_MLast.cmo pr_dump.cmo -o pa_lisp.ppo pa_lisp.ml
Error while loading "./pa_lispr.cmo": interface mismatch on MLast.

I haven't been able to figure out why. camlp4 is commented out of the
Makefile for now.

* The Foo.of_string functions aren't handling the suffixes, even though I
changed ints.c:parse_long() and ints.c:int64_of_string() to do so, and they
work when called through gdb. Do ocamlrun and the native compiler use
another set of functions for the conversions?


Help with any of the above is appreciated.

-- 
Shawn Wagner
shawnw@speakeasy.org
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners