Re: [Caml-list] Pre-compiled ocaml binary for windows
Hello, On 2010-12-03, at 21:06, José Romildo Malaquias wrote: Hello. I am looking for a binary release of the latest ocaml compiler for Windows. From the OCaml home page I can find only an older version (3.11.0). Where can I find the latest version? It depends on which port you want. For Cygwin, there is an up-to-date cygwin package. For the other ports, we are looking for volunteers to compile and publish the binaries. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] OCaml GC [was Is OCaml fast?]
On 2010-11-29, at 23:27, Török Edwin wrote: This seems to be in concordance with the smaller minor heap = more minor collections = slower program observation, since it is: smaller minor heap = more minor collections = more major slices = major slices can't collect long-lived objects = slower program (long lived objects are sweeped too many times). So more minor collections = higher cost for a major slice This is a bit naive, because the size of a major slice depends on the amount of data promoted by the corresponding minor GC. A smaller minor heap promotes less data each time, so you get more major slices, but they are smaller. The total amount of work done by the major GC doesn't change because of that. It only changes because a bigger minor heap gives more time for data to die before being promoted to the major heap. I think OCaml's GC should take into account how successful the last major GC was (how many words it freed), and adjust speed accordingly: if we know that the major slice will collect next to nothing there is no point in wasting time and running it. So this formula should probably be changed: p = (double) caml_allocated_words * 3.0 * (100 + caml_percent_free) / Wsize_bsize (caml_stat_heap_size) / caml_percent_free / 2.0; Probably to something that also does: p = p * major_slice_successrate The success rate is already taken into account by the major GC. In fact a target success rate is set by the user: it is caml_percent_free / (100 + caml_percent_free) and the major GC adjusts its speed according to this target. If the target is not met, the free list is emptied faster than the GC can replenish it, so it gets depleted at some point and the major heap is then extended to satisfy allocation requests. The bigger major heap then helps the major GC meet its target, because the success rate is simply (heap_size - live_data) / heap_size, and that gets higher as heap_size increases. I didn't do the math, but I think your modification would make the major heap size increase without bound. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] zero-arity constructor
On 2010-11-28, at 12:13, Alain Frisch wrote: As I've been designated as the primary responsible for that uninspired change (I plead guilty), I guess it is my responsibility to state here that frankly, I don't give a damn. That said, enabling the warning by default sounds better to me than reverting the change or introducing a new syntax. I still like the change, because it gets rid of a special case. I'll enable the warning by default. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] zero-arity constructor
On 2010-11-27, at 11:21, David Allsopp wrote: and set Warning 28 to be on by default for [Foo _] - that would simply mean that 3.11/3.12 code using that syntax would emit warnings in 3.13 rather than actually breaking (unless you've including -warn-error - but that's always seemed to me to be a development option, not a release option...) Hear, hear! This is in fact very important and bears repeating: don't use -warn-error in released code. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Optimizing garbage collection
On 2010-11-21, at 20:26, Eray Ozkural wrote: I've been thinking whether some kind of doubling strategy would work for the minor heap size. What do you think? Sounds like an interesting idea, but what heuristic would you use? When everything is smooth, the running time decreases something like exponentially with the minor heap size, so you'd always want to increase the size. How do you tell when to stop? And then, if the program is not behaving uniformly, when do you decide to reduce the size? -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] OCaml + mingw-w64
On 2010-11-22, at 13:04, Christoph Cullmann wrote: In ocaml 3.12, in byterun/major_gc.h, there is: intnat caml_major_collection_slice (long howmuch) whereas in the .c file that is: intnat caml_major_collection_slice (intnat howmuch) As intnat is with mingw-w64 long long, this doesn't match. Should not the header use intnat, too? You're right. This will be fixed in 3.12.1. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] How does OCaml update references when values are moved by the GC?
On 2010-10-28, at 23:48, Jon Harrop wrote: How does OCaml update references in the stacks and heap when values are moved by the GC? They are updated by the GC, of course. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] C binding and GC interaction: storing values outside the heap
On 2010-09-07, at 22:58, Paolo Donadeo wrote: The problem is that, for several good reasons, I need a copy, or a reference, to the OCaml value representing the lua_State (v_L in the code above) inside the Lua state (I mean the C data structure). That creates a cross-heap reference loop and it's very bad news for the GC. As a temporary workaround I removed the value state_value field from the ocaml_data struct, replacing it with a reference counter: Maybe you could try something similar, with a weak hash table to recover the OCaml value corresponding to a given lua_State, thus eliminating the need for a reference counter. Use the address of the lua_State for hashing and for comparison. Drawback: the weak hash table has to be global. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Re: Segfaults with Dynlink with OCaml 3.11
On 2010-08-25, at 06:00, Paul Steckler wrote: Today, I found the culprit. Here's the pattern: dynamically load .cmxs file query list mutated by .cmxs file (* no problem *) Gc.set { (Gc.get()) with Gc.minor_heap_size = ...}; Gc.set { (Gc.get()) with Gc.major_heap_increment = ... }; query mutated list (* segfault! *) If I move the Gc.set's to the program initialization code, before the loading of dynamic code, no segfaults occur. I bet the second Gc.set doesn't matter, and if you replace them with Gc.minor () you get the same behaviour. Is this expected behavior? Definitely not. You should file a bug report here, preferably with a complete repro case: Bug reports: http://caml.inria.fr/bin/caml-bugs -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Segfault with humongous heap size
On 2010-09-02, at 13:23, Paul Steckler wrote: If I enter this in my shell: declare -x OCAMLRUNPARAM=h=32 every OCaml program I run yields a segfault. I have OCaml 3.11.1+rc1 installed on Fedora 12 x64. Of course, that heap size, 3.2G words, is larger than the memory I have installed, but still, I shouldn't get a segfault. That's due to a stupid bug in parsing OCAMLRUNPARAM, compounded by a missing check for the error code returned. It will be fixed in 3.12.1. In the meantime, just use multipliers: declare -x OCAMLRUNPARAM=h=3200M -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Converting variants with only constant constructors to integers
Hi Kaustuv, On 2010-06-08, at 20:22, Kaustuv Chaudhuri wrote: Of course intify can cause a segmentation fault! # let arr = Array.of_list [intify 1.0; 0];; Segmentation fault This may be splitting hairs, but the reason that fails is that Array.of_list's ad hoc polymorphism heuristic assumes that if the first element of the list is allocated, then all elements are allocated. Merely changing the order works. Then again, good old addition has the same kind of problem with intify. $ ocaml Objective Caml version 3.12.0 # external intify : 'a - int = %identity;; external intify : 'a - int = %identity # let x = 1 + intify (1, 2);; val x : int = 2147734445 # Gc.minor ();; ocamlrun(11589) malloc: *** mmap(size=184834061894270976) failed (error code=12) *** error: can't allocate region -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] Objective Caml release 3.12.0
Dear OCaml users, We have the pleasure of announcing the release of OCaml version 3.12.0. This version brings many new features, see the list of changes below. It is available here: http://caml.inria.fr/download.en.html This is released as source for the time being, but the binary versions should be available soon. This release of OCaml is dedicated to the memory of Robin Milner. -- the OCaml team. = Objective Caml 3.12.0: -- (Changes that can break existing programs are marked with a * ) Language features: - Shorthand notation for records: in expressions and patterns, { lbl } stands for { lbl = lbl } and { M.lbl } for { M.lbl = lbl } - Record patterns of the form { lbl = pat; _ } to mark that not all labels are listed, purposefully. (See new warning below.) - Explicit naming of a generic type; in an expression fun ... (type t) ... - e, the type t is considered abstract in its scope (the arguments that follow it and the body of the function), and then replaced by a fresh type variable. In particular, the type t can be used in contexts where a type variable is not allowed (e.g. for defining an exception in a local module). - Explicit polymorphic types and polymorphic recursion. In let definitions, one can write an explicit polymorphic type just immediately the function name; the polymorphism will be enforced, and recursive calls may use the polymorphism. The syntax is the same as for polymorphic methods: let [rec] ident : 'a1 ... 'an. typexp = ... - First-class packages modules. New kind of type expression, for packaged modules: (module PT). New kind of expression, to pack a module as a first-class value: (module MODEXPR : PT). New kind of module expression, to unpack a first-class value as a module: (val EXPR : PT). PT is a package type of the form S or S with type t1 = ... and ... and type tn = ... (S refers to a module type). - Local opening of modules in a subexpression. Syntax: let open M in e, or M.(e) - In class definitions, method and instance variable override can now be made explicit, by writing method!, val! or inherit! in place of method, val and inherit. It is an error to override an undefined member (or to use overriding inheritance when nothing get overridden). Additionally, these constructs disactivate respectively warnings 7 (method override, code 'M') and 13 (instance variable override, code 'V'). Note that, by default, warning 7 is inactive and warning 13 is active. - Destructive substitution in signatures. By writing signature with type t := typeconstr and signature with module M := module-path one replaces t and M inside the signature, removing their respective fields. Among other uses, this allows to merge two signatures containing identically named fields. * While fixing PR#4824, also corrected a gaping hole in the type checker, which allowed instantiating separately object parameters and instance variables in an interface. This hole was here since the beginning of ocaml, and as a result many programs using object inheritance in a non trivial way will need to be corrected. You can look at lablgtk2 for an example. Compilers and toplevel: - Warnings are now numbered and can be switched on and off individually. The old system with letters referring to sets of warnings is still supported. - New warnings: + 9 (code 'R') to signal record patterns without ; _ where some labels of the record type are not listed in the pattern. + 28 when giving a wildcard argument to a constant constructor in a pattern-matching. + 29 when an end-of-line appears unescaped in a string constant. + 30 when the same constructor or record field is defined twice in mutually-recursive type definitions. * The semantics of warning 7 (code 'M', method override) have changed (it now detects all overrides, not just repeated definitions inside the same class body), and it is now inactive by default. - Better error report in case of unbound qualified identifier: if the module is unbound this error is reported in the first place. - Added option '-strict-sequence' to force left hand part of sequence to have type unit. - Added option '-no-app-funct' to turn applicative functors off. This option can help working around mysterious type incompatibilities caused by the incomplete comparison of applicative paths F(X).t. Native-code compiler: - AMD64: shorter and slightly more efficient code generated for float comparisons. Standard library: - Format: new function ikfprintf analoguous to ifprintf with a continuation argument. * PR#4210, #4245: stricter range checking in string-integer conversion functions (int_of_string, Int32.of_string, Int64.of_string, Nativeint.of_string). The decimal string corresponding to max_int + 1 is no longer accepted. - Scanf: to prevent confusion when mixing Scanf
Re: [Caml-list] OCaml 3.12.0+rc1
Daniel, On 2010-07-24, at 12:51, Daniel Bünzli wrote: report any problems with [...] installation on your favorite platform. Don't have the time right now to test it but if the BT is up to date this : http://caml.inria.fr/mantis/view.php?id=5093 wasn't fixed. I've fixed a number of problems with the ./build/fastworld.sh procedure, but it's a moving target: every time a Makefile changes, it gets out of sync. The bottom line is: don't use ./build/fastworld.sh, at least until we (the developers of OCaml) make a decision on whether to support it seriously. At any rate, it won't be fixed for 3.12.0. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] OCaml 3.12.0+rc1
Dear OCaml users, The release of OCaml 3.12.0 is imminent. We have made a release candidate 3.12.0+rc1, available as source code at this address: http://caml.inria.fr/pub/distrib/ocaml-3.12/ Unless there is any show-stopping bug, this will become 3.12.0 next week, so you'd better test it and report any problems with compilation and installation on your favorite platform. -- Damien Doligez for the OCaml team Objective Caml 3.12.0: -- (Changes that can break existing programs are marked with a * ) Language features: - Shorthand notation for records: in expressions and patterns, { lbl } stands for { lbl = lbl } and { M.lbl } for { M.lbl = lbl } - Record patterns of the form { lbl = pat; _ } to mark that not all labels are listed, purposefully. (See new warning below.) - Explicit naming of a generic type; in an expression fun ... (type t) ... - e, the type t is considered abstract in its scope (the arguments that follow it and the body of the function), and then replaced by a fresh type variable. In particular, the type t can be used in contexts where a type variable is not allowed (e.g. for defining an exception in a local module). - Explicit polymorphic types and polymorphic recursion. In let definitions, one can write an explicit polymorphic type just immediately the function name; the polymorphism will be enforced, and recursive calls may use the polymorphism. The syntax is the same as for polymorphic methods: let [rec] ident : 'a1 ... 'an. typexp = ... - First-class packages modules. New kind of type expression, for packaged modules: (module PT). New kind of expression, to pack a module as a first-class value: (module MODEXPR : PT). New kind of module expression, to unpack a first-class value as a module: (val EXPR : PT). PT is a package type of the form S or S with type t1 = ... and ... and type tn = ... (S refers to a module type). - Local opening of modules in a subexpression. Syntax: let open M in e, or M.(e) - In class definitions, method and instance variable override can now be made explicit, by writing method!, val! or inherit! in place of method, val and inherit. It is an error to override an undefined member (or to use overriding inheritance when nothing get overridden). Additionally, these constructs disactivate respectively warnings 7 (method override, code 'M') and 13 (instance variable override, code 'V'). Note that, by default, warning 7 is inactive and warning 13 is active. - Destructive substitution in signatures. By writing signature with type t := typeconstr and signature with module M := module-path one replaces t and M inside the signature, removing their respective fields. Among other uses, this allows to merge two signatures containing identically named fields. * While fixing PR#4824, also corrected a gaping hole in the type checker, which allowed instantiating separately object parameters and instance variables in an interface. This hole was here since the beginning of ocaml, and as a result many programs using object inheritance in a non trivial way will need to be corrected. You can look at lablgtk2 for an example. Compilers and toplevel: - Warnings are now numbered and can be switched on and off individually. The old system with letters referring to sets of warnings is still supported. - New warnings: + 9 (code 'R') to signal record patterns without ; _ where some labels of the record type are not listed in the pattern. + 28 when giving a wildcard argument to a constant constructor in a pattern-matching. + 29 when an end-of-line appears unescaped in a string constant. + 30 when the same constructor or record field is defined twice in mutually-recursive type definitions. * The semantics of warning 7 (code 'M', method override) have changed (it now detects all overrides, not just repeated definitions inside the same class body), and it is now inactive by default. - Better error report in case of unbound qualified identifier: if the module is unbound this error is reported in the first place. - Added option '-strict-sequence' to force left hand part of sequence to have type unit. - Added option '-no-app-funct' to turn applicative functors off. This option can help working around mysterious type incompatibilities caused by the incomplete comparison of applicative paths F(X).t. Native-code compiler: - AMD64: shorter and slightly more efficient code generated for float comparisons. Standard library: - Format: new function ikfprintf analoguous to ifprintf with a continuation argument. * PR#4210, #4245: stricter range checking in string-integer conversion functions (int_of_string, Int32.of_string, Int64.of_string, Nativeint.of_string). The decimal string corresponding to max_int + 1 is no longer accepted. - Scanf: to prevent confusion when mixing Scanf scanning functions and direct low level input, value Scanf.stdin has
[Caml-list] OCaml 3.12.0+beta1
Dear OCaml users, We have the pleasure of celebrating Bloomsday by announcing the release of OCaml version 3.12.0+beta1. This is a beta release, available as source only and intended for power users to test new features and report bugs (if any). This release brings a lot of new features, see the list included below. It is available here: http://caml.inria.fr/pub/distrib/ocaml-3.12/ , along with the updated reference manual. Happy hacking, -- Damien Doligez for the OCaml team. -- (Changes that can break existing programs are marked with a * ) Language features: - Shorthand notation for records: in expressions and patterns, { lbl } stands for { lbl = lbl } and { M.lbl } for { M.lbl = lbl } - Record patterns of the form { lbl = pat; _ } to mark that not all labels are listed, purposefully. (See new warning below.) - Explicit naming of a generic type; in an expression fun ... (type t) ... - e, the type t is considered abstract in its scope (the arguments that follow it and the body of the function), and then replaced by a fresh type variable. In particular, the type t can be used in contexts where a type variable is not allowed (e.g. for defining an exception in a local module). - Explicit polymorphic types and polymorphic recursion. In let definitions, one can write an explicit polymorphic type just immediately the function name; the polymorphism will be enforced, and recursive calls may use the polymorphism. The syntax is the same as for polymorphic methods: let [rec] ident : 'a1 ... 'an. typexp = ... - First-class packages modules. New kind of type expression, for packaged modules: (module PT). New kind of expression, to pack a module as a first-class value: (module MODEXPR : PT). New kind of module expression, to unpack a first-class value as a module: (val EXPR : PT). PT is a package type of the form S or S with type t1 = ... and ... and type tn = ... (S refers to a module type). - Local opening of modules in a subexpression. Syntax: let open M in e, or M.(e) - In class definitions, method and instance variable override can now be made explicit, by writing method!, val! or inherit! in place of method, val and inherit. It is an error to override an undefined member (or to use overriding inheritance when nothing get overridden). Additionally, these constructs disactivate respectively warnings 7 (method override, code 'M') and 13 (instance variable override, code 'V'). Note that, by default, warning 7 is inactive and warning 13 is active. - Destructive substitution in signatures. By writing signature with type t := typeconstr and signature with module M := module-path one replaces t and M inside the signature, removing their respective fields. Among other uses, this allows to merge two signatures containing identically named fields. * While fixing PR#4824, also corrected a gaping hole in the type checker, which allowed instantiating separately object parameters and instance variables in an interface. This hole was here since the beginning of ocaml, and as a result many programs using object inheritance in a non trivial way will need to be corrected. You can look at lablgtk2 for an example. Compilers and toplevel: - Warnings are now numbered and can be switched on and off individually. The old system with letters referring to sets of warnings is still supported. - New warnings: + 9 (code 'R') to signal record patterns without ; _ where some labels of the record type are not listed in the pattern. + 28 when giving a wildcard argument to a constant constructor in a pattern-matching. + 29 when an end-of-line appears unescaped in a string constant. + 30 when the same constructor or record field is defined twice in mutually-recursive type definitions. * The semantics of warning 7 (code 'M', method override) have changed (it now detects all overrides, not just repeated definitions inside the same class body), and it is now inactive by default. - Better error report in case of unbound qualified identifier: if the module is unbound this error is reported in the first place. - Added option '-strict-sequence' to force left hand part of sequence to have type unit. - Added option '-no-app-funct' to turn applicative functors off. This option can help working around mysterious type incompatibilities caused by the incomplete comparison of applicative paths F(X).t. Native-code compiler: - AMD64: shorter and slightly more efficient code generated for float comparisons. Standard library: - Format: new function ikfprintf analoguous to ifprintf with a continuation argument. * PR#4210, #4245: stricter range checking in string-integer conversion functions (int_of_string, Int32.of_string, Int64.of_string, Nativeint.of_string). The decimal string corresponding to max_int + 1 is no longer accepted. - Scanf: to prevent
Re: [Caml-list] no_scan_tag and int array
Hello, On 2010-03-06, at 10:26, ygrek wrote: So, as expected, setting No_scan_tag on the array of integers prevents GC from uselessly scanning the huge chunk of memory. Looks like polymorphic array functions still work fine and GC correctly reclaims array memory when it is not referenced anymore. Apparantly this trick is not allowed for float array as they have a special tag set. The trick is not needed for float arrays, the GC already doesn't scan them. The question is - how safe is this? It's safe, and will be in the forseeable future. BUT: you should use Abstract_tag and not No_scan_tag. Abstract_tag means don't make assumptions about the contents of this block, while No_scan_tag is just the min of all the tags that the GC is not supposed to scan. Right now they are equal, but a future version of OCaml might have No_scan_tag = Double_array_tag, which would break your code. And even more, could the compiler itself set this tag? This is a bit tricky because you have to make sure that the static type of the array is int array. Unlike floats, a run-time test at allocation will not work. You should enter this as a feature wish in the BTS. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] out of memory error
Hello, On 2010-02-02, at 14:31, Kihong Heo wrote: Can't I use ocamlrun -v for my program such that it use foreign language interface with C. If I couldn't, can you give me a good debugging methodology? It's very difficult to find out that error because of using foreign language interface.. The OCaml runtime options are controlled by an environment variable: OCAMLRUNPARAM. You can set this variable with setenv or export (depending on your shell) before running your program. You do not need to call ocamlrun explicitely with command-line arguments. This feature is documented here: http://caml.inria.fr/pub/docs/manual-ocaml/manual024.html#toc88 HTH, -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] A syntax extension to simplify List manipulation
On 2010-01-17, at 09:24, blue storm wrote: 2) The use of the Extlib module is hardcoded in the syntax extension. I would find it nicer if you only referred to List.map instead of Extlib.List.map, and let the user open Extlib if he wants to override the stdlib. That would allow one to use other implementations of List. You can do this if you want to use the stdlib instead of extlib: module Extlib = struct module List = List end;; Rather ugly, but it should work... -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] ANN: Objective Caml 3.11.2 released.
Dear OCaml users, It is our pleasure to celebrate the birthday of Andre-Marie Ampere by announcing the release of OCaml version 3.11.2. This is mainly a bug-fix release, see the list of changes below. It is available here: http://caml.inria.fr/download.en.html . It is source-only for the moment, but the binary versions will be made available soon. Note that there are still known problems under Windows with the experimental procedure of building the system with ocamlbuild, so you should build with make for the moment. Happy hacking, -- the OCaml team. Objective Caml 3.11.2: -- Bug fixes: - PR#4151: better documentation for min and max w.r.t. NaN - PR#4421: ocamlbuild uses wrong compiler for C files - PR#4710, PR#4720: ocamlbuild does not use properly configuration information - PR#4750: under some Windows installations, high start-up times for Unix lib - PR#4777: problem with scanf and CRLF - PR#4783: ocamlmklib problem under Windows - PR#4810: BSD problem with socket addresses, e.g. in Unix.getnameinfo - PR#4813: issue with parsing of float literals by the GNU assembler - PR#4816: problem with modules and private types - PR#4818: missed opportunity for type-based optimization of bigarray accesses - PR#4821: check for duplicate method names in classes - PR#4823: build problem on Mac OS X - PR#4836: spurious errors raised by Unix.single_write under Windows - PR#4841, PR#4860, PR#4930: problem with ocamlopt -output-obj under Mac OS X - PR#4847: C compiler error with ocamlc -output-obj under Win64 - PR#4856: ocamlbuild uses ocamlrun to execute a native plugin - PR#4867, PR#4760: ocamlopt -shared fails on Mac OS X 64bit - PR#4873: ocamlbuild ignores thread tag when building a custom toplevel - PR#4890: ocamlbuild tries to use native plugin on bytecode-only arch - PR#4896: ocamlbuild should always pass -I to tools for external libraries - PR#4900: small bug triggering automatic compaction even if max_overhead = 1M - PR#4902: bug in %.0F printf format - PR#4910: problem with format concatenation - PR#4922: ocamlbuild recompiles too many files - PR#4923: missing \xff for scanf %S - PR#4933: functors not handling private types correctly - PR#4940: problem with end-of-line in DOS text mode, tentative fix - PR#4953: problem compiling bytecode interpreter on ARM in Thumb mode. - PR#4955: compiler crash when typing recursive type expression with constraint - Module Printf: the simple conversion %F (without width indication) was not treated properly. - Makefile: problem with cygwin, flexdll, and symbolic links - Various build problems with ocamlbuild under Windows with msvc Feature wishes: - PR#9: (tentative implementation) make ocamldebug use #linenum annotations - PR#123, PR#4477: custom exception printers - PR#3456: Obj.double_field and Obj.set_double_field functions - PR#4003: destination directory can be given to Filename. [open_]temp_file - PR#4647: Buffer.blit function - PR#4685: access to Filename.dir_sep - PR#4703: support for debugging embedded applications - PR#4723: clear_rules function to empty the set of ocamlbuild rules - PR#4921: configure option to help cross-compilers ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Re: [ANN] Release Candidate: 3.11.2+rc1
On 2010-01-12, at 11:30, Sylvain Le Gall wrote: Is it this the problem you are talking about: [...] No. We have a report of build problems with MSVC when building with ocamlbuild that I need to investigate. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] problem creating .cma library
On 2009-12-31, at 00:30, Guillaume Yziquel wrote: #include stdio.h #include caml/mlvalues.h #include ../mylib/mylib.h CAMLprim value my_print_stub(value v) { CAMLparam1(v); /* is missing here, for garbage collection purposes. */ char* str = (char*)String_val( v ); /* You do not need the right-hand side (char*) casting. */ my_print( str ); return Val_unit; } If you use CAMLparam1, you must use CAMLreturn instead of return. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] ocaml as editor extension language
On 2010-01-05, at 08:24, Joel Reymont wrote: You cannot embed OCaml and use it as an editor extension language unless 1) your editor is open source, or 2) you are a member of the consortium and pay 2K EUR/year 3k -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] [ANN] Release Candidate: 3.11.2+rc1
Dear Ocaml Users, It is our pleasure to announce that the release of 3.11.2 is imminent. What we need now is your cooperation for testing the release candidate, especially on Windows. The release candidate is available as source code at this address: ftp://ftp.inria.fr/INRIA/Projects/cristal/ocaml/ocaml-3.11/ocaml-3.11.2+rc1.tar.bz2 See the list of changes at the end of this mail. After testing this release candidate, please send a mail to damien.doli...@inria.fr and tell us what you tested and whether it worked. Notes for Windows users: - A recent update to Vista seems to have broken cygwin version 1.5. You will need to install the new version 1.7.1 instead: http://www.cygwin.com/ - You will also need the latest version of Alain Frisch's flexdll, version 0.21: http://alain.frisch.fr/flexdll.html#download Happy new year's eve to everyone, -- The OCaml Team Objective Caml 3.11.2+rc1: -- Bug fixes: - PR#4151: better documentation for min and max w.r.t. NaN - PR#4421: ocamlbuild uses wrong compiler for C files - PR#4710, PR#4720: ocamlbuild does not use properly configuration information - PR#4750: under some Windows installations, high start-up times for Unix lib - PR#4777: problem with scanf and CRLF - PR#4810: BSD problem with socket addresses, e.g. in Unix.getnameinfo - PR#4813: issue with parsing of float literals by the GNU assembler - PR#4816: problem with modules and private types - PR#4818: missed opportunity for type-based optimization of bigarray accesses - PR#4821: check for duplicate method names in classes - PR#4823: build problem on Mac OS X - PR#4836: spurious errors raised by Unix.single_write under Windows - PR#4841, PR#4860, PR#4930: problem with ocamlopt -output-obj under Mac OS X - PR#4847: C compiler error with ocamlc -output-obj under Win64 - PR#4856: ocamlbuild uses ocamlrun to execute a native plugin - PR#4867, PR#4760: ocamlopt -shared fails on Mac OS X 64bit - PR#4873: ocamlbuild ignores thread tag when building a custom toplevel - PR#4890: ocamlbuild tries to use native plugin on bytecode-only arch - PR#4896: ocamlbuild should always pass -I to tools for external libraries - PR#4900: small bug triggering automatic compaction even if max_overhead = 1M - PR#4902: bug in %.0F printf format - PR#4910: problem with format concatenation - PR#4922: ocamlbuild recompiles too many files - PR#4923: missing \xff for scanf %S - PR#4933: functors not handling private types correctly - PR#4940: problem with end-of-line in DOS text mode, tentative fix - Module Printf: the simple conversion %F (without width indication) was not treated properly. - Makefile: problem with cygwin, flexdll, and symbolic links Feature wishes: - PR#9: (tentative implementation) make ocamldebug use #linenum annotations - PR#123, PR#4477: custom exception printers - PR#3456: Obj.double_field and Obj.set_double_field functions - PR#4003: destination directory can be given to Filename. [open_]temp_file - PR#4647: Buffer.blit function - PR#4685: access to Filename.dir_sep - PR#4703: support for debugging embedded applications - PR#4723: clear_rules function to empty the set of ocamlbuild rules - PR#4921: configure option to help cross-compilers ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [***SPAM*** Score/Req: 10.1/8.0] Re: [Caml-list] Re: OCaml is broken
On 2009-12-20, at 13:21, Erik Rigtorp wrote: The first step for OCaml would be to be able to run multiple communicating instances of the runtime bound to one core each in one process and have them communicate via lock free queues. Does anyone know how to do lock-free queues in a weakly-consistent memory model? -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] compiling OCaml program for supercomputer running SGI Propack 6?
Hi, On 2009-12-17, at 19:28, Dave Lewis wrote: [Apologies for duplication across mailing lists.] Hi - I'd like to run this OCaml program: [...] on the 3TB memory supercomputer described here http://www.ncsa.illinois.edu/UserInfo/Resources/Hardware/SGIAltix/Tec ... It appears that the OS, SGI ProPack 6 [...] is a version of Linux, but the 64-bit Linux compilation we produced using the OCaml 3.10 compiler gives this error message: Exec format error. Binary file not executable. It looks like you are trying to run Pentium executables on an Itanium machine. If the supercomputer is available for compiling, you should bootstrap and install OCaml on that machine, otherwise you'll need to find a smaller Itanium-based machine to compile your program (and hope the executables will be compatible), or make a cross-compiler to run on your PC. Making a cross-compiler is quite a lot harder than installing OCaml on the target machine directly, but you have a how-to here: http://brion.inria.fr/gallium/index.php/CrossCompiler -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Gc.compact surprisingly helpful
On 2009-12-04, at 20:09, Aaron Bohannon wrote: So in a 15 second run (with no idle time, as I said), it now does about 130 heap compactions instead of 3 and gets better total performance because of it, utterly defying my GC intuition. What is the size of your heap? Have you tried compacting only once every 2, 3, 5, or 10 loops? One possible explanation is that compaction will also compact the free list into a few large blocks, which makes allocation faster. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] A warning about warnings
Hello World, I've been compiling OCaml programs and libraries lately, and I've seen this kind of things in make output: ocamlc -w A -warn-error A or even: ocamlc -w Ael -warn-error Ael You should not do that, because it means your build will break with the next version of OCaml that adds a new warning, even if that warning is disabled by default for compatibility reasons, as soon as your code triggers the new warning (which it will do, due to Murphy's law). What you should do instead: ocamlc -w ELZ -warn-error A and ocamlc -w Z -warn-error A Or completely refrain from using -warn-error A and only activate the error option on explicit sets of warnings. Better yet, you could remove the -warn-error option from your released Makefiles, and reserve it for development. Happy hacking, -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] tip for tail recursive map
On 2009-10-23, at 21:55, pikatchou pokemon wrote: I know this topic has been discussed several times, but I don't think I have seen the solution I use for functions of the List module which are not tail recursive. I thought sharing the tip could be nice. I will take an example, List.map. When rewritten in CPS map becomes: let rec map k f = function | []- k [] | x :: rl - map (fun res - k ((f x) :: res)) f rl You can do better with an ad-hoc encoding of the continuation instead of using closures: let rec map k f = function | [] - List.rev k | x :: rl - map (f x :: k) f rl ;; The memory footprint is smaller, and you spend much less time invoking closures. Note that I haven't bothered benchmarking these two functions. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Cache algorithms: implementation or library available?
On 2009-09-23, at 09:54, Hugo Ferreira wrote: Funny enough I was expecting complicated uses of the Weak module. The Weak module is never the right tool for implementing a cache. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Understanding GC and Alarms
Hello, On 2009-08-04, at 15:39, Björn Pelzer wrote: With the alarm loop, the GC will only print the first part (Calling finalisation functions.) once at the start of the loop and then begin looping, starting new cycles but no new finalisations. Yes, the GC calls the finalisation functions in order, so it waits for your finalisation function to finish before starting the next one. If your function doesn't terminate... The other (and to me more severe) oddity is that if the alarm function raises an exception, then the GC seems to remain in its special mode where it starts no finalisation calling - but now it will also refuse to do any alarms. Yes, that is the essence of bug report 4742: http://caml.inria.fr/mantis/view.php?id=4742 Is there a way to get the GC back to normal after an exception during the alarm? That is the purpose of the Gc.finalise_release function: tell the GC to behave as if the current finalisation function had finished. Note that finalise_release is also safe to call from outside a finalisation function, so you can call it from your exception handler. When bug 4742 is fixed (probably in 3.12.0), you won't need it any more. Note that I wanted to fix it by ignoring the exception entirely, but your use case made me change my mind. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] OCaml 3.11.1 released
Dear OCaml users, It is our pleasure to celebrate the 30th anniversary of the first human-powered flight over the English channel by announcing the release of OCaml version 3.11.1. This is mainly a bug-fix release, see the list of changes below. It is available here: http://caml.inria.fr/download.en.html Special thanks to Andres Varon, who tested RC1 on eight different configurations. Happy hacking, -- The OCaml team. Objective Caml 3.11.1: -- Bug fixes: - PR#4095: ocamldebug: strange behaviour of control-C - PR#4403: ocamldebug: improved handling of packed modules - PR#4650: Str.regexp_case_fold mis-handling complemented character sets [^a] - PR#4660: Scanf.format_from_string: handling of double quote - PR#4666: Unix.exec* failure in multithread programs under MacOS X and FreeBSD - PR#4667: debugger out of sync with dynlink changes - PR#4678: random out of memory error with systhreads - PR#4690: issue with dynamic loading under MacOS 10.5 - PR#4692: wrong error message with options -i and -pack passed to ocamlc - PR#4699: in otherlibs/dbm, fixed construction of dlldbm.so. - PR#4704: error in caml_modify_generational_global_root() - PR#4708: (ocamldoc) improved printing of infix identifiers such as lor. - PR#4722: typo in configure script - PR#4729: documented the fact that PF_INET6 is not available on all platforms - PR#4730: incorrect typing involving abbreviation type 'a t = 'a - PR#4731: incorrect quoting of arguments passed to the assembler on x86-64 - PR#4735: Unix.LargeFile.fstat cannot report size over 32bits on Win32 - PR#4740: guard against possible processor error in {Int32,Int64,Nativeint}.{div,rem} - PR#4745: type inference wrongly produced non-generalizable type variables. - PR#4749: better pipe size for win32unix - PR#4756: printf: no error reported for wrong format '%_s' - PR#4758: scanf: handling of \newline by format '%S' - PR#4766: incorrect simplification of some type abbreviations. - PR#4768: printf: %F does not respect width and precision specifications - PR#4769: Format.bprintf fails to flush - PR#4775: fatal error Ctype.Unify during module type-checking (temporary fix) - PR#4776: bad interaction between exceptions and classes - PR#4780: labltk build problem under Windows. - PR#4790: under Windows, map ERROR_NO_DATA Win32 error to EPIPE Unix error. - PR#4792: bug in Big_int.big_int_of_int64 on 32-bit platforms. - PR#4796: ocamlyacc: missing NUL termination of string - PR#4804: bug in Big_int.int64_of_big_int on 32-bit platforms. - PR#4805: improving compatibility with the clang C compiler - PR#4809: issue with Unix.create_process under Win32 - PR#4814: ocamlbrowser: crash when editing comments - PR#4816: module abbreviations remove 'private' type restrictions - PR#4817: Object type gives error Unbound type parameter .. - Module Parsing: improved computation of locations when an ocamlyacc rule starts with an empty nonterminal - Type-checker: fixed wrong variance computation for private types - x86-32 code generator, MSVC port: wrong fld instruction generated. - ocamlbuild: incorrectly using the compile-time value of $OCAMLLIB - Makefile problem when configured with -no-shared-libs - ocamldoc: use dynamic loading in native code Other changes: - Improved wording of various error messages (contributed by Jonathan Davies, Citrix). - Support for 64-bit mode in Solaris/x86 (PR#4670). ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] OCaml 3.11.1 released
On 2009-06-12, at 14:46, Damien Doligez wrote: It is our pleasure to celebrate the 30th anniversary of the first human-powered flight over the English channel by announcing the release of OCaml version 3.11.1. This is mainly a bug-fix release, see the list of changes below. I forgot one important detail: the release is only available as source for the moment. Binaries will be made available shortly. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] OCaml 3.11.1 released
On 2009-06-12, at 15:02, Stéphane Glondu wrote: The links to the sources seem to be broken. Sorry about that. It is fixed now. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] JOB: post-doc at MSR-INRIA Joint Centre
Research team: Tools for Proofs, MSR-INRIA Joint Centre The Microsoft Research-INRIA Joint Centre is offering a 2-year position for a post-doctoral researcher to work on a proof development environment for TLA+ in the Tools for Proofs project-team (see http://www.msr-inria.inria.fr). Research Context TLA+ is a language for formal specifications and proofs designed by Leslie Lamport. It is based on first-order logic, set theory, temporal logic, and a module system. While the specification part of TLA+ has existed for several years, the proof language is more recent, and we want to develop tools for writing and checking proofs. The main program of our development environment is called the Proof Manager (PM). The PM translates TLA+ source files to low-level proofs that are checked by Isabelle. To this end, the PM calls the Zenon automatic theorem prover to fill in the trivial details omitted from proofs at the source level. Within the Isabelle framework we have an axiomatization of TLA+ (Isabelle/TLA+). Isabelle provides high assurance by checking all the proofs provided by the user or by Zenon. The PM also has an interface to CVC3, which provides a stronger automatic prover, but with lower assurance of correctness. The current version of the PM handles only the action part of TLA+: first-order formulas with primed and unprimed variables; where a variable is considered as unrelated to its primed version. This allows us to translate first-order formulas to first-order formulas, without the overhead associated to an encoding of temporal logic into first-order logic. This part of TLA+ is already useful for proving safety properties. Description of the activity of the post-doc The task devoted to the post-doc will be to extend the proof manager to deal with the temporal part of TLA+. To this end, he will have to define a new translation into Isabelle to handle the temporal operators, in a way that enables the re-use of non-temporal theorems proved with the simple translation. He will also have to implement this new translation and the interface between the two translations. Skills and profile of the candidate We are looking for a candidate with skills in some or all of the following subjects: parsing and compilation, logic and set theory, Isabelle, OCaml, Eclipse and Java. Moreover, the applicant must have a good command of the English language. Location The Microsoft Research-INRIA Joint Centre is located on the Campus of INRIA Futurs, in South part of Paris, near the Le-Guichet RER station. The Tools for Proofs project-team is composed of Damien Doligez, Leslie Lamport and Stephan Merz. Contact Candidates should send a resume and the name and e-mail address of one or two references to Damien Doligez damien.doli...@inria.fr. ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] ANN: OCaml 3.11.1+rc1
Dear OCaml users, We fixed a few bugs from OCaml 3.11.1+rc0, and prepared a new release candidate. The main changes from rc0 are the following. - PR#4796: ocamlyacc: missing NUL termination of string - PR#4798: compilation of ocamldoc.opt fails under windows - PR#4804: bug in Big_int.int64_of_big_int on 32-bit platforms. - PR#4805: improving compatibility with the clang C compiler - PR#4809: issue with Unix.create_process under Win32 The changes from 3.11.0 are listed at the end of this mail. If you haven't tested rc0, or if you had a problem with one of the above bugs, please test rc1 now and send me some feedback. This release candidate is available in source code at ftp://ftp.inria.fr/INRIA/cristal/ocaml/ocaml-3.11/ocaml-3.11.1+rc1.tar.gz We seem to have a small problem remaining in build/install.sh. It will be fixed for the release. Happy hacking, -- Damien for the OCaml team Objective Caml 3.11.1: -- Bug fixes: - PR#4095: ocamldebug: strange behaviour of control-C - PR#4403: ocamldebug: improved handling of packed modules - PR#4650: Str.regexp_case_fold mis-handling complemented character sets [^a] - PR#4660: Scanf.format_from_string: handling of double quote - PR#4666: Unix.exec* failure in multithread programs under MacOS X and FreeBSD - PR#4667: debugger out of sync with dynlink changes - PR#4678: random out of memory error with systhreads - PR#4690: issue with dynamic loading under MacOS 10.5 - PR#4692: wrong error message with options -i and -pack passed to ocamlc - PR#4699: in otherlibs/dbm, fixed construction of dlldbm.so. - PR#4704: error in caml_modify_generational_global_root() - PR#4708: (ocamldoc) improved printing of infix identifiers such as lor. - PR#4722: typo in configure script - PR#4729: documented the fact that PF_INET6 is not available on all platforms - PR#4730: incorrect typing involving abbreviation type 'a t = 'a - PR#4731: incorrect quoting of arguments passed to the assembler on x86-64 - PR#4735: Unix.LargeFile.fstat cannot report size over 32bits on Win32 - PR#4740: guard against possible processor error in {Int32,Int64,Nativeint}.{div,rem} - PR#4745: type inference wrongly produced non-generalizable type variables. - PR#4749: better pipe size for win32unix - PR#4756: printf: no error reported for wrong format '%_s' - PR#4758: scanf: handling of \newline by format '%S' - PR#4766: incorrect simplification of some type abbreviations. - PR#4768: printf: %F does not respect width and precision specifications - PR#4769: Format.bprintf fails to flush - PR#4775: fatal error Ctype.Unify during module type-checking (temporary fix) - PR#4776: bad interaction between exceptions and classes - PR#4780: labltk build problem under Windows. - PR#4790: under Windows, map ERROR_NO_DATA Win32 error to EPIPE Unix error. - PR#4792: bug in Big_int.big_int_of_int64 on 32-bit platforms. - PR#4796: ocamlyacc: missing NUL termination of string - PR#4804: bug in Big_int.int64_of_big_int on 32-bit platforms. - PR#4805: improving compatibility with the clang C compiler - PR#4809: issue with Unix.create_process under Win32 - Module Parsing: improved computation of locations when an ocamlyacc rule starts with an empty nonterminal - Type-checker: fixed wrong variance computation for private types - x86-32 code generator, MSVC port: wrong fld instruction generated. - ocamlbuild: incorrectly using the compile-time value of $OCAMLLIB - Makefile problem when configured with -no-shared-libs - ocamldoc: use dynamic loading in native code Other changes: - Improved wording of various error messages (contributed by Jonathan Davies, Citrix). - Support for 64-bit mode in Solaris/x86 (PR#4670). ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] OCaml version 3.11.1+rc0
Dear OCaml users, It is our pleasure to announce that release 3.11.1 is imminent. We have uploaded a release candidate at this address: http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.1+rc0.tar.gz See the list of changes below. We need you to test this on as many system types as possible. Please report success or failure to damien.doli...@inria.fr as usual. -- Damien Objective Caml 3.11.1: -- Bug fixes: - PR#4095: ocamldebug: strange behaviour of control-C - PR#4403: ocamldebug: improved handling of packed modules - PR#4650: Str.regexp_case_fold mis-handling complemented character sets [^a] - PR#4660: Scanf.format_from_string: handling of double quote - PR#4666: Unix.exec* failure in multithread programs under MacOS X and FreeBSD - PR#4667: debugger out of sync with dynlink changes - PR#4678: random out of memory error with systhreads - PR#4690: issue with dynamic loading under MacOS 10.5 - PR#4692: wrong error message with options -i and -pack passed to ocamlc - PR#4699: in otherlibs/dbm, fixed construction of dlldbm.so. - PR#4704: error in caml_modify_generational_global_root() - PR#4708: (ocamldoc) improved printing of infix identifiers such as lor. - PR#4722: typo in configure script - PR#4729: documented the fact that PF_INET6 is not available on all platforms - PR#4730: incorrect typing involving abbreviation type 'a t = 'a - PR#4731: incorrect quoting of arguments passed to the assembler on x86-64 - PR#4735: Unix.LargeFile.fstat cannot report size over 32bits on Win32 - PR#4740: guard against possible processor error in {Int32,Int64,Nativeint}.{div,rem} - PR#4745: type inference wrongly produced non-generalizable type variables. - PR#4749: better pipe size for win32unix - PR#4756: printf: no error reported for wrong format '%_s' - PR#4758: scanf: handling of \newline by format '%S' - PR#4766: incorrect simplification of some type abbreviations. - PR#4768: printf: %F does not respect width and precision specifications - PR#4769: Format.bprintf fails to flush - PR#4775: compiler crash on crazy types (temporary fix) - PR#4776: bad interaction between exceptions and classes - PR#4780: labltk build problem under Windows. - PR#4790: under Windows, map ERROR_NO_DATA Win32 error to EPIPE Unix error. - PR#4792: bug in Big_int.big_int_of_int64 on 32-bit platforms. - Module Parsing: improved computation of locations when an ocamlyacc rule starts with an empty nonterminal - Type-checker: fixed wrong variance computation for private types - x86-32 code generator, MSVC port: wrong fld instruction generated. - ocamlbuild: incorrectly using the compile-time value of $OCAMLLIB - Makefile problem when configured with -no-shared-libs - ocamldoc: use dynamic loading in native code Other changes: - Improved wording of various error messages (contributed by Jonathan Davies, Citrix). - Support for 64-bit mode in Solaris/x86 (PR#4670). ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Strange performance bug
On 2009-04-29, at 15:58, Markus Mottl wrote: Note that the effect of not precompiling the regular expressions is not just the overhead of this computation, but also vastly greater GC-pressure. The current GC-settings in Pcre will trigger a full GC-cycle every 500 regular expressions allocated, i.e. would perform a full major collection every 500 lines in your case. This setting works fine for just about any application I've seen, because virtually nobody has to create patterns dynamically at rates so high that this matters. Markus, you put your finger right on the problem. That program doesn't suddenly start to get slow, it gets steadily slower as it runs. The heap also gets steadily bigger, and the major GC does way too much work. Alain's explanation (about why changing the last line changes the speed of the rest of the program) looks right to me. When you remove that last line, the GC still does too much work, but the heap doesn't grow, so it doesn't get slower. To see the problem, you should play with the GC verbosity settings, for example, see the difference between OCAMLRUNPARAM=v=1 ./problem slow and OCAMLRUNPARAM=v=1 ./problem fast Maybe PCRE should change its settings to trigger GCs less often but, as Markus said, this doesn't look really important. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] First release of focalize, a development environment for high integrity programs.
On 2009-03-24, at 11:55, David MENTRE wrote: For those interested in such details, FoCaLize seems to be under a BSD-like license (I have not made a detailed review of the code). I would be interested to know if knowledged people (e.g. Debian developers ;-) consider this code Free Software or not. In my (off-topic for this list) opinion, this whole licence business is totally out of control because lawyers have succeeded in scaring everyone witless about it. For example, I don't understand why you would need a detailed review of the code in order to notice that the licence (which you quoted) is an exact copy of the new BSD licence (straight from www.opensource.org, IIRC). Whether you (or the Debian developers, Microsoft management, or whoever else) choose to call it Free is a matter of political opinion and debate on this topic is usually a waste of time. This was my license rant for 2009. Thanks for your attention. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] problems with Yahoo?
On 2009-03-04, at 14:39, Ed Keith wrote: Something seems to be wrong with the list, this is the 18th copy of this one message I have received! I am receiving 2 to 4 copies of most messages. -EdK Ed Keith e_...@yahoo.com Apparently, this happens only to (some) Yahoo users. You should try to contact Yahoo support. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] caml_atom_table bug still present in ocaml 3.11.0
On 2008-12-07, at 20:21, Alexy Khrabrov wrote: Under the 2005 thread, the resolution, by John Skaller, was, it should go into the bugtracker; did it, and if not, should it now? :) I don't think it dit, and yes you should add it, although it looks like a strange gcc bug. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] OCaml version 3.11.0 released.
Hello, On 2008-12-05, at 04:15, Rich Neswold wrote: The link to the Mac .dmg, on your web page, file appears to be incorrect. It should be http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.0.dmg . Thanks. It is fixed now. I'm taking over part of the management of the Web site, so this kind of problem is not entirely unexpected at this point. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
[Caml-list] OCaml version 3.11.0+beta1
Dear OCaml Users, We are pleased to celebrate the birthday of Friedrich Nietzsche by releasing OCaml version 3.11.0+beta1. We need YOU to test it thoroughly and report any problems you might have. Does your favorite software work with it? It is available as a source release only (plus documentation), from this address: http://caml.inria.fr/pub/distrib/ocaml-3.11/ It is also available from our CVS server at: http://camlcvs.inria.fr/ Use tag ocaml3110beta1 to get the beta release, and tag release311 to track the bug fixes between this and the final release of 3.11.0. Have fun and PLEASE send us some feedback, positive or negative. -- The OCaml team. - Camlp5 HOW-TO Camlp5 version 5.09 does not work with OCaml 3.11.0+beta1 out of the box. A new version compatible with OCaml 3.11.0 should be released very soon. In the meantime you can use the following commands (in the root directory of the Camlp5 5.09 sources) to compile Camlp5 5.09 with OCaml 3.11.0+beta1. Note that you will need to provide the path name to a copy of the OCaml 3.11.0+beta1 sources at the line labelled HERE. cp -R ocaml_stuff/3.11 ocaml_stuff/3.11.0 cp ocaml_src/main/ast2pt.ml_3.11 ocaml_src/main/ast2pt.ml_3.11.0 ed main/ast2pt.ml -EOF g/OCAML_3_11/s// OR OCAML_3_11_0/ wq EOF ed top/rprint.ml -EOF g/OCAML_3_11/s// OR OCAML_3_11_0/ wq EOF ./configure --transitional make steal OCAML_SRC=path-to-ocaml-source-dir # HERE make core make bootstrap_sources ./configure --transitional make world.opt That's all. Now you can make install as usual. ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Manually triggering garbage collection
On 2008-07-29, at 15:39, Jean Krivine wrote: OK great I' ll try, For the moment I just set a Gc alarm that detects whether memory usage is above a certain limit and if so, sets the overhead to 0, which stops completely the memory leak. Setting the overhead to 0 seems a bit overkill. You might want to do a Gc.compact() at this point. Or you might just need to change the max_overhead parameter: the lower it is, the more often the GC will compact the heap. Do you think that would improve to increase the size of the major heap? Yes, sometimes it helps with fragmentation. Also, increasing the heap_increment may help. Also, do you know how often the alarm is tested? is it each time a major collection is performed? The GC alarms are triggered at the end of each major collection. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] New Ocaml Plug-in for NetBeans
On 2008-07-26, at 17:22, Jon Harrop wrote: For example, I cannot even jump to the definition of an identifier reliably. OCaml 3.11 has extended .annot files that will allow external tools to do that. Also, it tells you which function calls are tail calls and which are normal calls. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs
Re: [Caml-list] Re: Where's my non-classical shared memory concurrency technology?
On 2008-05-27, at 11:34, Martin Berger wrote: Here I disagree. Shared memory concurrency is a specific form of message passing: Writing to a memory cell is in fact sending a message to that cell carrying two items, the new value and a return channel that is used to inform the writer that sending has succeeded, and likewise for reading. [...] But broadcasting is a form of message-passing too! That wasn't my point. My point was that there is no return channel. If you want to know when your write is done, you have to use a lock or a memory barrier. Both are very expensive. -- Damien ___ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs