1. eu 4.0 alpha bugs
- Posted by ChrisB (moderator) Nov 29, 2008
- 1130 views
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
2. Re: eu 4.0 alpha bugs
- Posted by mattlewis (admin) Nov 30, 2008
- 1054 views
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
3. Re: eu 4.0 alpha bugs
- Posted by ChrisB (moderator) Nov 30, 2008
- 1004 views
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
4. Re: eu 4.0 alpha bugs
- Posted by mattlewis (admin) Nov 30, 2008
- 1031 views
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
5. Re: eu 4.0 alpha bugs
- Posted by ChrisB (moderator) Nov 30, 2008
- 1055 views
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
6. Re: eu 4.0 alpha bugs
- Posted by mattlewis (admin) Nov 30, 2008
- 980 views
- Last edited Dec 01, 2008
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
7. Re: eu 4.0 alpha bugs
- Posted by donCole01 Dec 01, 2008
- 1025 views
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