My name is Seo Sanghyeon. I live in Uijeongbu, Korea. I have not
really worked on implementing languages on JVM, but I do have some
language implementation experience.
I was involved in PyPy project (http://codespeak.net/pypy/) since
2003. I wrote most of its (currently incomplete) Common Lisp backend,
and did the initial implementation of its command line entry point
(py.py) and compiler experiment shell (translator.py).
Then in 2005, I started working on IronPython, mainly porting
extension modules written in C like md5 and pyexpat (Expat XML parser
binding). For the first half of 2006 I tried to keep IronPython
working on Mono (it kept breaking with each release) by reporting
whatever bugs to Mono bugzilla. Then IronPython 1.0 Final was
released, and the breakage was mostly stopped.
Since September 2006, I maintain the "fork" of IronPython in the form
of "IronPython Community Edition". I published six releases since
then, with about 30 patches in total, which mainly addresses corner
cases of compatibility. Microsoft IronPython team did fix the most of
reported bugs (but did not use my patches; they fixed them their own
way) and the current release only has 3 patches applied.
http://fepy.sourceforge.net/
http://fepy.sourceforge.net/doc/ironpython-mono-report.html
http://fepy.sourceforge.net/doc/ipce-release-note.html
Okay, enough introduction.
Charles Oliver Nutter wrote:
> Also, I'd be interested in any discussions on JVM
> versus CLR design decisions, for those who know the details. We may be
> able to learn from CLR.
And:
> JRuby's AST used to match Ruby's, but to support IDEs we (Tom) added in
> comments as well. This is largely the reason why JRuby's parser and AST
> are the most widely used for Ruby IDE work. I believe all the major
> Java-based IDEs use our code.
Interfaces to IDE from language implementations would have a lot of
things in common, and I believe this is worth standardizing.
Microsoft's Dynamic Language Runtime has a Microsoft.Scripting.Hosting
namespace, which defines "language services". One of them is "token
categorizer".
I used monop tool (which is exactly like javap) to extract public
interfaces pertaining to this functionality. It's uploaded here:
http://sparcs.kaist.ac.kr/~tinuviel/misc/tokencategorizer
This looks like a very well thought out interface to me. TokenCategory
and TokenTriggers enumeration are quite interesting. Persumably, this
is an interface intended to be used by Visual Studio integration.
I would be interested in how existing JVM language-IDE interfaces
work. Like NetBeans JRuby integration, and PyDev Eclipse plugin.
Seo Sanghyeon
> I used monop tool (which is exactly like javap) to extract public
> interfaces pertaining to this functionality. It's uploaded here:
> http://sparcs.kaist.ac.kr/~tinuviel/misc/tokencategorizer
I'm slightly nervous about looking at IronPython because it is largely
"owned" by Microsoft, but since it has an open source license, I could
get over it (There are potential patent problems, but I could get
comfortable with leaving that heartburn to the lawyers). On the other
hand looking at decompiled proprietary code is a terrifying
prospect... I don't think I would even consider doing that... the
legal issues (copyright, EULAs, etc) are much more clearcut even for
non-lawyers...
-Frank
I don't understand this fear. Can anyone explain this?
--
Seo Sanghyeon
That being said, the supreme court has recently weakened software
patents, but IANAL so I do not know all that much about it beyond the
sound bite.
My nervousness is minor, but it is enough to put CLR stuff a little
lower on the list of things that I want to look at someday.
-Frank
Eh, so you think ITokenCategorizer interface can be patented? If not,
how is this relevant to this discussion?
--
Seo Sanghyeon
Decompiled proprietary code on the other hand...
-Frank
If "one click shopping" can be patented, all bets are off.
- Charlie
This discussion is depressing.
However, I want to point out that IronPython license "grants you a
non-exclusive, worldwide, royalty-free license under its licensed
patents to make, have made, use, sell, offer for sale, import, and/or
otherwise dispose of its contribution in the software or derivative
works of the contribution in the software", where "licensed patents
are a contributor's patent claims that read directly on its
contribution".
http://www.codeplex.com/IronPython/Project/License.aspx
Maybe it's not good enough for others. It's good enough for me.
--
Seo Sanghyeon
-Frank