Eagle: Maturation and Evolution 17th Annual Tcl Conference Joe Mistachkin.

Slides:



Advertisements
Similar presentations
Unit 1: Overview of the Microsoft.NET Platform
Advertisements

15 th Annual Tcl/Tk Conference October 2008 Timothy L. Tomkinson Fellow Software Engineer Northrop Grumman Electronic Systems Remote Control of Test Equipment.
COM vs. CORBA.
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
Chapter 3.2 C++, Java, and Scripting Languages. 2 C++ C used to be the most popular language for games Today, C++ is the language of choice for game development.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
Executable XML Present by 吳昆澤. Outline  Introduction  Simkin  Jelly  o:XML  Conclusion.
C#: Project Cool Arthur Ketchel II Keith Francisco Chris McInnis.
Microsoft ASP.NET AJAX - AJAX as it has to be Presented by : Rana Vijayasimha Nalla CSCE Grad Student.
1 CS6320 – Why Servlets? L. Grewe 2 What is a Servlet? Servlets are Java programs that can be run dynamically from a Web Server Servlets are Java programs.
Scripting Languages CS351 – Programming Paradigms.
Chapter 3.2 C++, Java, and Scripting Languages hacked by jeffery.
Guide To UNIX Using Linux Third Edition
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
2. Developing in.NET and C#. 2 Microsoft Objectives “Microsoft.NET development is based on an underlying framework of tools and classes. These tools and.
Language Issues Misunderstimated? Sublimable? Hopefuller? "I know how hard it is for you to put food on your family.” "I know the human being and fish.
Intro to dot Net Dr. John Abraham UTPA – Fall 09 CSCI 3327.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Groovy WHAT IS IT? HOW DOES IT WORK? IS IT USEFUL?
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Lecture Roger Sutton CO530 Automation Tools 5: Class Libraries and Assemblies 1.

Joel Bapaga on Web Design Strategies Technologies Commercial Value.
C++ Programming. Table of Contents History What is C++? Development of C++ Standardized C++ What are the features of C++? What is Object Orientation?
Eagle: Tcl Implementation in C# Alt.NET 2011 (Seattle) Joe Mistachkin.
119th International Unicode ConferenceSan Jose, California, September 2001 An Overview of ICU Helena Shih Chapman Doug Felt
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
Introduction to Shell Script Programming
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
JAS3 + AIDA LC Simulations Workshop SLAC 19 th May 2003.
Eagle: Tcl Implementation in C# 15th Annual Tcl Conference Joe Mistachkin.
Learningcomputer.com SQL Server 2008 Configuration Manager.
.NET Framework Danish Sami UG Lead.NetFoundry
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Jan Benda Martin Maly Tomas Matousek Ladislav Prosek Pavel Novak Vaclav Novak Tomas Matousek Department of Software Engineering Faculty.
PHP Features. Features Clean syntax. Object-oriented fundamentals. An extensible architecture that encourages innovation. Support for both current and.
240-Current Research Easily Extensible Systems, Octave, Input Formats, SOA.
Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically generated web pages.
CSE S. Tanimoto Java Introduction 1 Java A Programming Language for Web-based Computing with Graphics.
Intro to dot Net Dr. John Abraham UTPA CSCI 3327.
9-Nov-97Tri-Ada '971 TASH An Alternative to the Windows API TRI-Ada ‘97 Terry J. Westley
Porting a large scale enterprise application from Tcl/Tk 8.4 to 8.5 Prashant Thakre, Tushar Gupta {prashant_thakre, Gaurav Bansal.
 Programming - the process of creating computer programs.
Eagle: Tcl Integration with the CLR 16th Annual Tcl Conference Joe Mistachkin.
PHP vs. Python. Similarities are interpreted, high level languages with dynamic typing are Open Source are supported by large developer communities are.
Copyright (c) 2006 IBM Corporation; made available under the EPL v1.0 Update Policy ~ Where we are in 3.2.
IE Developer Tools Jonathan Seitel Program Manager.
Creating FunctionstMyn1 Creating Functions Function can be divided into two groups: –Internal (built in) functions –User-defined functions.
GLite build and integration system Building and Packaging Robert HARAKALY
LECTURE #4: JQUERY AND FORM VALIDATION Josh Kaine Josh Kaine 4/1/2016.
Debugging using By: Samuel Ashby. What is debugging?  A bug is an error in either a program or the hardware itself.  Debugging is first locating and.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
Lecture 1 Page 1 CS 111 Summer 2013 Important OS Properties For real operating systems built and used by real people Differs depending on who you are talking.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Introducing the Microsoft® .NET Framework
What is IronTcl? Binary distribution of Tcl/Tk.
Eagle: Tcl Integration with the CLR
Java Interview Questions
What are they? The Package Repository Client is a set of Tcl scripts that are capable of locating, downloading, and installing packages for both Tcl and.
Current Generation Hypervisor Type 1 Type 2.
Outline Introduction to the Phalanger System
Introduction to JSP Liu Haibin 12/09/2018.
DotnetConf 11/14/2018 3:27 AM © 2016 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE.
Module 10: Implementing Managed Code in the Database
(Computer fundamental Lab)
Eagle: Maturation and Evolution
Running C# in the browser
SPL – PS1 Introduction to C++.
Presentation transcript:

Eagle: Maturation and Evolution 17th Annual Tcl Conference Joe Mistachkin

Two years ago, at a conference far far away… Eagle was presented and there was much rejoicing. However, it was not all double-rainbows and flying unicorns.

What is Eagle? Eagle is an open-source implementation of Tcl written in C# for the CLR. Designed to be highly extensible and easily embeddable into CLR-based applications. Supports approximately 90% of the Tcl 8.4 core command set.

What is Eagle, really? Originally designed for the purpose of providing a first-class library for scripting applications written for the CLR. All other considerations were secondary, including performance and full Tcl compatibility.

What Eagle is not. Not based on the Microsoft Dynamic Language Runtime (DLR). Not intended for stand-alone application development. Unlikely to ever have a compiler. Not a replacement for Tcl or Jacl.

I hate Microsoft,.NET, C#, etc. Ok, but you like Tcl; otherwise, you wouldn’t be here. Eagle is good for the Tcl community because it exposes Tcl to an audience that would otherwise have little or no exposure to it.

What if 100% Tcl compatibility is required? The included wrapper can be used to access native Tcl from managed code. Fully discussed in the Eagle 2009 presentation, available for download.

Where is the innovation? The “application is always right” attitude. – The IHost interface, etc. One interpreter, multiple threads, safely. The “universal option parser”. The seamless integration with CLR objects. – Full support for overload resolution, properties, methods, fields, and events. The built-in debugging support. Simple development / deployment model (i.e. the “add a reference and go experience”).

Compatibility, performance, and me. There are still several major Tcl 8.4 features missing. The overall performance is still several orders of magnitude slower than Tcl. I’m still the only person working on the project.

What is still missing? No Tk. No argument expansion syntax (i.e. {*}). No namespace support (except the global namespace). No asynchronous input/output. No [binary], [fblocked], [fileevent], [format], [glob], [history], [memory], [scan], or [trace] commands. For [open], command pipelines and serial ports are not supported. For [exec], Unix-style input/output redirection and command pipelines are not supported. No Safe Base. No [registry] or [dde] commands. No http, msgcat, or tcltest packages.

Why no namespaces? Not enough time in the original schedule. It makes command and variable resolution far more complex.

But, I really need namespaces. What steps have already been taken? Support for custom resolvers has already been added via the “default resolver” and the managed resolver API.

Why no compiler? Not enough time in the original schedule. Raw performance was not a primary consideration. Being dynamic and correct is more important than being fast. Long running scripts can be evaluated (and canceled as necessary) in secondary threads. The CLR just-in-time compiler is already pretty good.

Performance Problems Can be much slower than native Tcl, even for the simplest operations. Over time, targeted optimizations have been added for all critical code paths.

What is slow? Parsing strings into lists. Building lists from strings. Expression evaluation, primarily string-to-type conversions. All other performance issues are insignificant compared to these three.

Architectural Problems, Part 1 The interpreter class is far too large. – Break into multiple files. – Move all entity management to a new component. – Move all shared state and its management to a new component. – Move all “helper” functionality to other classes unless they need access to interpreter internals. – The interactive loop code is too large.

Major Components

Architectural Problems, Part 2 The engine is too recursive. – There would potentially be a lot of benefits from something like NRE. The components are too tightly coupled and have some circular dependencies.

The Mono Saga Mono support was added prior to the conference last year. It has never been perfect because of serious bugs in the Mono platform. Eagle should build and run correctly on recent versions of Mono (e.g and 2.8) for Windows and Unix.

How can I help? Test in your environments and report any issues you find. Contribute to the documentation and/or the test suite. Provide feedback, suggest features, or flames.

Where is it?

Questions and Answers