1. eu 4.0 alpha bugs

Hi

Firstly thankyou to the devs, and Jim Brown, for what I assume is the official alpha release posted on rapideuphoria.

On windows

I have backed up, then deleted, my original bin directory, and replace it with the new bin in the zip. I have added the new include directory to my own personal stuffed include directory.

Performed a few tests, and everything was fine, mostly.

There isn't straight compatibility between 3 and 4 though, and I've had to modify a couple of things to get them working

1. if you have created your own includes, just put public in fornt of all the include files. This may be untidy, but it works, otherwise the translator complains about unresolved symbols.

A couple of curious errors, with workarounds

in eu 4.0 
This is ok 
VOID = query_database("xprods.sql", cmd) 
 
but this 
if object(query_database("xprods.sql", cmd)) then end if 
gets  
"query_database" is not defined 
 
and 
 
Notes = {} 
if length(data) > 0 then 
        for i = 2 to length(data) do 
                Notes = append(Notes, data[i]) 
                if Notes[$][N_TYPE][1] = 'W' and CurPatient[PA_WEIGHT] = 0 then		--original 
			--this produces an error 
			--the length of an atom is not defined 
                if Notes[i-1][N_TYPE][1] = 'W' and CurPatient[PA_WEIGHT] = 0 then	--needs to be modified to this 
			--but this works fine 
                        wt_tmp = strtoval(data[i][N_NOTE]) 
                end if 
        end for 
end if 
 
 

some issue with [$] ?, but I use this in lot of other places, and hasn't produced an error
error is in Notes[$][N_TYPE][1] as have tested it, not in CurPatient[PA_WEIGHT]
note the two ifs - one is f course commented out at run time

new topic     » topic index » view message » categorize

2. Re: eu 4.0 alpha bugs

ChrisB said...

in eu 4.0 This is ok

VOID = query_database("xprods.sql", cmd) 

but this

if object(query_database("xprods.sql", cmd)) then end if 

gets "query_database" is not defined

Ok, I see the problem with this. It's due to changes to object() to allow it to detect uninitialized variables. It hasn't been updated to deal with forward references.

Matt

new topic     » goto parent     » topic index » view message » categorize

3. Re: eu 4.0 alpha bugs

Hi

Just pointing out that this is a program that works in 3.11, and query_database wasn't forward referenced there - don't know if that helps or not.

Chris

new topic     » goto parent     » topic index » view message » categorize

4. Re: eu 4.0 alpha bugs

ChrisB said...

Just pointing out that this is a program that works in 3.11, and query_database wasn't forward referenced there - don't know if that helps or not.

Was it a global reference to a file that wasn't included by the file trying to use it? That's basically equivalent (in 4.0) to a forward reference.

Matt

new topic     » goto parent     » topic index » view message » categorize

5. Re: eu 4.0 alpha bugs

Hi

Hmm

boiled down, 3 files

jetvet.exu

public include eusqlite3.ew 
 
without warning 
 
public include datafuncs.ex 
 
public include clients.ex 
 

datafuncs contains query_database() clients contains the above code snippet jetvet.exu is the program that starts it all, with all the required includes. There is no include in clients.ex to datafuncs, so datafuncs is included through jetvet.ex

While I can see the advantages of this for reducing include conflicts (and I realise that this is an object() issue, but it does have shades of unresolved conflicts too), I think this is going to cause a lot of headaches for transition to 4.0. Is there any way, for now, of having a directive, like

with 3_include_compatability

that will indicate to the translator to use includes the old style way, then we could have the best of both worlds, or have things gone too far back up now?

Any idea on the [$] issue too?

Chris

new topic     » goto parent     » topic index » view message » categorize

6. Re: eu 4.0 alpha bugs

ChrisB said...

datafuncs contains query_database() clients contains the above code snippet jetvet.exu is the program that starts it all, with all the required includes. There is no include in clients.ex to datafuncs, so datafuncs is included through jetvet.ex

While I can see the advantages of this for reducing include conflicts (and I realise that this is an object() issue, but it does have shades of unresolved conflicts too), I think this is going to cause a lot of headaches for transition to 4.0. Is there any way, for now, of having a directive, like

with 3_include_compatability

that will indicate to the translator to use includes the old style way, then we could have the best of both worlds, or have things gone too far back up now?

Any idea on the [$] issue too?

4.0 shouldn't break any working code due to include issues (actually, I think we found some really unusual edge cases that could break). The issues you uncovered were bugs in the interpreter, so your code should work.

We're likely to find more issues like this. Basically, we've changed some fundamental assumptions in how the parser works, and while we've created lots of tests, and tried to find all the affected code paths, we continue to find new ones that need work. That's why we're at alpha. :)

I've figured out the object() stuff, and I'm working on the $ issue now.

Matt

new topic     » goto parent     » topic index » view message » categorize

7. Re: eu 4.0 alpha bugs

mattlewis said...
ChrisB said...

in eu 4.0 This is ok

VOID = query_database("xprods.sql", cmd) 

but this

if object(query_database("xprods.sql", cmd)) then end if 

gets "query_database" is not defined

test Ok, I see the problem with this. It's due to changes to object() to allow it to detect uninitialized variables. It hasn't been updated to deal with forward references.

Matt

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu