Hello Guys

1)
We spent a bit of time to work on 3.1b -> 4.3 migration
We succeed to compile when removing all optimization but testcase are hard to 
make ...

I face an issue using *fl in the interpreter.

Here is my test (it doesn't do a real thing but shows the error):

(module top
        (main main))

(define (main argv)
  (test  1.25 '(1 2 3)))


(define (test cload curve)
  (let* ((mylambda  (lambda (cv)
                      (let*  ((add           1.3)
                              (toadd         (*fl add 1e-4))) ;; If I replace 
*fl by * it also works in Interpreted mode.
                        (for-each (lambda (x)
                                    (set! add (+ toadd add)))
                                  cv)
                        add
                        )
                      )))
    (print  (mylambda curve))
    ))

1:=> (load "toto.scm")
#unspecified
main
test
*** ERROR:bigloo:
`segmentation violation' exception -- raised
    1. \@test, toto.scm:9
    2. test, toto.scm:8
    3. load, toto.scm:8
1:=> (quit)

(note that some time it is completely impossible to quit the interpreter, I 
need to use kill -9)

The test work with * both in compiled and interpreted mode but fails in the 
interpreter when using *fl. (it works with *fl when compiled)
(same with other fl operator)
Can you have a look at it ?


2) Parser "issue"

We use to describe some yacc rules with:

( (+ digit)
  (? #\%))         (the-fixnmu))

It was correctly working before:  (the-fixnum) was sending the last matching 
fixnum.
In crgc.c Line 745 : rgc_buffer_fixnum you were using atol C function that was 
correctly returning the number.

Now you run over the complete string without checking if it is a number or not 
and add the ASCII number of whatever we have... returning a wrong number...
Maybe you want to use back the atol, or checking if the character is in the 0-9 
range (I don't know what you prefer ....)
(or change the doc and I will change my syntax ^^ )

(I currently use atol in my local Bigloo4.3a to go further in my investigations)


3) Is there a way to replace all "instantiation" of a function when we reload a 
module file ?
Little explanation:
I load a software where there is 3 modules mod1 mod2 mod3 Having each one 1 
function func1 func2 func3
Func1 call func2
Func2 call func3

Let say that I load these modules,
If I change func3 and reload the file (with load or loadq) func2 will still 
call the old func3.
So I need to reload mod2.
Then func1 is calling the old func2 that still call the old func3, so I need to 
reload module1.
By the way if I have cyclic dependency, I need to reload 3 or 4 times ALL 
modules. AND we need to do it in the good order or you are gone to make it 1 or 
2 times more ! Grrrr

Having the interpreted  mode is so powerfull to make modifications and debug 
very quickly, it's a shame that we need to make these tricks to reload some 
part of the code...
(2.7 was really good at this !)

Thanks and regards,
Pierre-Francois























Reply via email to