[E-Lang] some E oddness AND Announcement of the E bug tracking system.

steve jenson stevej@sieve.net
Fri, 7 Sep 2001 14:12:58 -0700


Quoting Mark S. Miller (markm@caplet.com):

> At 02:01 AM Friday 9/7/01, steve jenson wrote:
> >I was developing under E tl-8.9.1 for Windows and have recently turned
> >that windows box into a Linux machine, and after installed tl-8.9.1b I noticed
> >a few problems with some E code I was writing under my Windows installation.
> >
> >
> >These are the first two lines of my code:
> >
> >def awt__uriGetter := <unsafe:java.awt.*>
> >def swing__uriGetter := <unsafe:javax.swing.*>
> >
> >And when I run the script, I get the following error:
> >
> ># problem: <UndefinedVariableException: unsafe__uriGetter not in scope>
> >#          
> >#   <interp> evalPrint(e`define awt__uriGetter := unsafe__uriGetter get("java.awt.*")`)
> 
> Your Linux installation is operating correctly.  tl-otc-0.8.9.1* does not 
> have an unsafe__uriGetter.  This came in on the main development line 
> starting at stl-0.8.9s, which was the first version to support locally 
> untrusted code.  (Hence the dropping of the "otc-" qualifier, meaning "only 
> trusted code".)  In the Es with the otc- modifier, including yours, 
> import__uriGetter will get everything.  In the latter versions, 
> import__uriGetter would only get emakers and those classes deemed safe, and 
> unsafe__uriGetter would get all remaining classes.
> 
> I just tried your snippet on my Windows installation of 
> tl-otc-0.8.9.1*, and it gives the same error as your Linux installation.  In 
> order to program in 0.8.9.1* in a way that will be easy to migrate to 
> 0.8.10, you should first say
> 
> def unsafe__uriGetter := import__uriGetter
> 
> after which your code snippet should work fine.  Once you move to 0.8.10, 
> you would need to remove all three lines, as 0.8.10's privileged scope (the 
> one *.e files evaluate in) predefine all these uriGetters.

ah excellent. Thank you. One issue after this I'm having trouble with
is that JPanel__quasiParser isn't in my scope either. I see it in 
org.erights.ex.swing.JPanel__quasiParser.emaker but am unsure of how to 
import it into my scope. 

def JPanel := <import:org.erights.ex.swing.JPanel__quasiParser>

or other variants I've tried aren't doing the trick.

 
> >Why did I never notice this before? Is this error always supposed to be
> >around? Perhaps I cross-contaminated by E installations on the Windows
> >box. Since that machine is no longer running the same OS I have no way
> >of going back to see what's up.
> 
> That's most unfortunate, because I would have liked to try to diagnose 
> what's going on.  I suspect you did indeed cross contaminate, perhaps by 
> having a too-inclusive CLASSPATH.  Please let me know what you can remember 
> of how you installed tl-otc-0.8.9.1b on your machine.

I ran multiple versions of E, installed in seperate directories, and
I thought I was only pointing to the 8.9.1b installation but perhaps
my system-wide CLASSPATH had the 8.9t jars in there as well.



In other news, for those who don't already know, there is a bug tracking
system up at http://bugs.sieve.net/projects/e-lang/  

The public can browse and add bugs as they wish and those of us who wish
to fix these bugs can create accounts and one of the project admins will
add you to the list so that bugs may be assigned to you.


I have added my little scope snafu into the bug tracking system as an
example of what could be added on the lower spectrum of bug tracking, 
something that isn't necessarily a "bug" per se but could cause other
people trouble and having a trouble ticket open on the subject could help
serve other people with the same problem.


Hopefully people will find it useful. Let me know if you have any
problems.

regards,
steve



-- 
steve jenson <stevej@sieve.net> http://sieve.net/
PGP fingerprint: 79D0 4836 11E4 A43A 0179  FC97 3AE2 008E 1E57 6138