[35 total ]
Profiling

When you have a performance problem, profiling an application will help you figure out where the bottleneck is. However, most profiling tool have a tendency to slow down the execution by a significant factor and EiffelStudio is unfortunately no ... [More] different. Nevertheless, we have added a neat class called PROFILING_SETTING that will enable you to enable/disable the profiler on only some parts of an execution.

To make sure you are using this class properly you should know the following:
Profiling should be enabled in the project settings
First executed instruction should be a call to {PROFILING_SETTING}.stop_profiling
Last executed instruction should be a call to {PROFILING_SETTING}.start_profiling
When profiling a section of code the calls start_profiling and stop_profiling, they should appear in the same routine, as otherwise the profiler will be confused

With EiffelStudio 6.0, there is also a very handy feature that comes for free with the new project settings structure with libraries. By default libraries do not inherit the `profiling' setting and are therefore excluded from the profiling (thus speeding up the profiling). It simply means that you won't know how much time is spent in a routine from a library, but the time is still accounted for the callers of that routine. If you want to profile a library, you simply need to mark it so in your project configuration.

I've showed that you can profile a certain portion of code, but you can also disable profiling a certain portion too. We use it when profiling the compiler for not tracking the time spent in the parser. Here is an example:

f is
    local
        l_prof_setting: PROFILING_SETTING
        l_is_profiling: BOOLEAN
        retried: BOOLEAN
    do
        if not retried then
            create l_prof_setting.make
            l_is_profiling := l_prof_setting.is_profiling
            l_prof_setting.stop_profiling
   
                -- Your code here
            ...
        end
        if l_is_profiling then
            check l_prof_setting_not_void: l_prof_setting /= Void end
            l_prof_setting.start_profiling
        end
    rescue
        retried := True
        retry
    end

Ok, it looks a little bit more complicated than what you expected. If you do not care about correctness then you know that you can remove:
the rescue clause if you do not anticipate exceptions
the `l_is_profiling' local variable if nothing else is enabling/disabling the profiler

Enjoy Eiffel and profiling! [Less]

EiffelStudio and OLPC

Have you heard about the One Laptop Per Child initiative (also known as the $100 laptop). If not, check out http://www.laptop.org for more information. The reason why I'm mentioning it is simple, EiffelStudio is running on it.

We received ... [More] our test laptop last week and installed the standard delivery of EiffelStudio 6.0 for Linux-x86. See below for a picture of the laptop with EiffelStudio:

The only thing that we had to do was to use another window manager (twm in place of the sugar one which truncates the visible screen a little bit too much to see the whole EiffelStudio environment) and have our own .gtkrc-2.0 file to use a smaller font than the default for GTK.

Note that to execute your systems, you also need to install a C compiler (tcc or gcc) as the laptop does not come with one. But you do not have to develop on the laptop, you can do like us, develop on Linux-x86 and simply copy the binary over the laptop.

The specs of the laptop are 1GB of flash memory for the hard-drive and 256MB of RAM which is good enough for compiling some relatively large projects (1000 or more classes).

Happy Eiffeling, Manu [Less]

EiffelStudio Completion Tip (2)

Paul suggested a very nice tip with the wild card completion (new feature of 5.7). I'd like to show that there is an even older feature that is pretty much unknown to many users. It is the routine argument filling facility.

When you complete ... [More] a routine via the completion dialog, the name of the routine as well as its full signature is inserted in the code. Some complained to us that it was annoying because you ended up having to remove the extra information. But actually there is a very nice thing to do, simply press the Tab key and it automatically selects the first argument, type whatever you want and then press the Tab key to go to the next argument and so on. When you reach the last argument, pressing Tab again will go after the closing parenthesis, pressing it one more will select the whole line and one more time will go back to the first argument. [Less]

.NET and Mono (cont.)

I wanted to give an update on the Mono support. As of version 1.2.5 of Mono (version soon to be released) we can say that Eiffel assemblies will work smoothly with Mono. Our last regression test for the compiler targeting Mono is only failing 20 ... [More] tests that the Microsoft .NET runtime is accepting (over 1350 tests). We have yet to find why those tests are failing, but they are a good indication that Mono is ready to be used with Eiffel assemblies.

Happy Eiffeling and Happy .NET [Less]

A more compact alternative to Cygwin: MSYS

During the work to support MinGW as a backend C compiler for EiffelStudio on Windows, we found MSYS which is a subset of what is needed to run a configure script on Windows. The side effect of this subset is that it contains most of the UNIX commands ... [More] we have all been used to (ls, rm, touch, tail, tar, ....). MSYS is also very compact with less than 6MB uncompressed.

We are now using a subset of MSYS to compile the Eiffel runtime on Windows (before we required bash from cygwin but not all version of bash worked out of the box). Thus simplifying the steps for compiling the runtime on Windows to:
Choose your C compiler and possibly configure it (not needed with MinGW or Borland since we use the one that will be in the EiffelStudio delivery).
Compile the runtime using the Configure.bat script.

For more details see Compiling EiffelStudio [Less]

EiffelStudio 6.1 and MinGW on Windows

This week we added a new backend C compiler for EiffelStudio. We chose MinGW (gcc based) as it is made to target Windows and its Win32 API. Surprisingly, it was fairly easy to do. Indeed we have tried to do this in the past but without too much ... [More] success.

In 1996, we tried but quickly failed because the Windows API support was really not ready. In 1999, it got better and we did some ground work to make our tools support gcc. But unfortunately they were some limitations in the toolchain and it would not compile large application (as they often say in this case it was a limitation in the binutils, see the Cygwin mailing list archive). Regardless of this, some of the issues we had were:
Directory separator convention: / instead of \
The difference between .lib/.obj and .o/.a, and more precisely the correct usage of ar rc vs. ld -r -o.
Ordering of libraries for linking.

In 2002, we tested it again with gcc coming from the cygwin distribution. It worked great but not for compiling Windows application. We simply used cygwin as if we were on a Unix platform and compiled everything as on Unix. The command line compiler was up and running but no way to generate a graphical application unless using GTK.

We choose MinGW because they have started to do a 64-bit version and once we have the 32-bit version up and running it should be straightforward to support 64-bit. We are unsure when the 64-bit version will be available, but the 32-bit version will be a very good replacement for the Borland C compiler which is starting to get a little bit too old. Like Borland, MinGW does not require any user configuration, it will be properly configured at install time.

The result today is that we have compiled the default Vision2 application out of the box. The good news is that what we have done could work with 6.0 as long as you copy the necessary files over, but the target is the next release of EiffelStudio in November.

Anyone interested in testing this should wait the first intermediate release of 6.1 in the next couple of weeks. [Less]

EiffelStudio 6.0 is out

In mid-April, Eiffel Software announced a changed in its release cycle by having two EiffelStudio releases per year (one in mid-May and one in mid-November). This would really start this Fall (i.e Fall in the northern hemisphere) since for this ... [More] Spring, it was decided to have a release by mid-June. I'm happy to report that we have been on time and released EiffelStudio 6.0 on June 19th.

You can read the 6.0 release notes on our documentation website. For those who cannot wait to see what's new, here are some highlights:
New docking facilities which let you control the layout of tools in EiffelStudio. One can also lock the layout to prevent unwanted changes.
New tabbed editor.
Added configurable pick and drop which lets you choose between traditional context menu or pick and drop for a mouse right click operation.
EiffelStudio is now internationalized, it supports English, Chinese and German. A partial translation for French and Russian is provided.
New ISO/ECMA Eiffel standard mechanisms (multi-constraint, octal and binary notation for integers).
Shortcuts can now be customized.
Added dependency view so supplier/client dependency of a group/folder/class can be investigated. Feature calls are included in dependency view.
Debugger enhancement: added new kind of breakpoints (to print messages, hit count for condtitions), evaluation of commands in addition of queries, new ways of looking at objects.

I would also like to thank all the early users of 6.0 as well as all the testers who have helped us the past two months in making this release better in many ways.

Happy Eiffeling,
Manu [Less]

ACM Awards Banquet

This week-end, I was at the Hotel Del Coronado in San Diego for the ACM Awards Banquet where the various ACM awards are given, including the ACM Turing Award (given for the first time to a woman, Frances Allen) and, of interest to me, the Software ... [More] System Award given to Eiffel and Bertrand Meyer.

It started with a cocktail on Saturday evening:

Then we went to the official banquet room for the dinner. We began with some appetizers while the awards were given. I've taken some pictures of Bertrand when it was his turn to go on stage. He is surrounded by Stuart Feldman (ACM president, author of make), John White (ACM CEO) and an IBM representative (since IBM is sponsoring the Software System Award):

I'm sure there will be more pictures on the ACM site when their June release is out.

A few other interesting highlights of the evening:
Yi-Ren Ng who received the Doctoral Dissertation Award' for his PhD Digital Light Field Photography. In other words, equipping digital cameras with an after the fact refocusing engine, i.e. no more blurry pictures!!!
Many awards received for people working on text analysis and search.
Google increased sponsorships of new talents.
The winners of the 2007 Annual ACM International Collegiate Programming Contest World Finals from Warsaw University were on stage for further recognition from the ACM. They solved the first problem of the competition 13 minutes after receiving the list of problems. [Less]

EiffelStudio Testing

As you may have noticed we are bringing significant changes to the software process at Eiffel Software, reflecting the new nature of the development, our commitment to addressing user needs quickly and effectively, and the growing involvement of ... [More] open-source contributors.

In particular, we have switched to a two-release-a-year schedule: the June release (May starting in 2008) and the November release. This makes it possible for users to plan their developments and their upgrades. A release plan, regularly updated, appears at:
http://eiffelsoftware.origo.ethz.ch/index.php/Roadmap (General EiffelStudio road map)
http://eiffelsoftware.origo.ethz.ch/index.php/Language_road_map (Language road map)
http://eiffelsoftware.origo.ethz.ch/index.php/ECMA_Implementation (ECMA implementation)

The last six weeks of the release are devoted entirely to testing. You can find details of the testing process here with a description of the procedures and forms (TCS, Test Case Specification; TRR, Test Run Report) and access to the TCSs and TRRs developed so far. These are all our internal documents; we live in a glass house now and you are welcome to examine our process and its results. You are also welcome to participate; there is still time to contribute your own tests and test runs. Just follow the instructions.

6.0 feedback has been excellent; although we still have many bugs to fix, we are very excited about this major new release and eager to bring it to completion. Thank you very much for your participation in this process. [Less]

EiffelStudio 6.0 coming soon

Last week-end, we did our last intermediate release of the development cycle for EiffelStudio 6.0. The next month will be devoted to testing with a planned release mid-June. While waiting for the release, I'm taking the opportunity to highlight some ... [More] of the neat features of EiffelStudio 6.0.

UI

Tabbed editor
Docking facility to organize the layout of EiffelStudio
Contextual menus
Internationalization with Chinese, French, German, and Russian currently supported

Browsing tools

New dependency tool to see dependencies of software elements
Create your own formatters

Debugger

Added new kind of breakpoints: to print messages, hit count for condtitions.
Let's you now evaluate commands in addition of queries.
New ways of looking at objects.

Compiler

Added new ECMA features: multiple constraints, reattachment of generic derivations with expanded actual parameters to entities with reference parameters.
Removed the need of a configuration file to compile small systems, you can simply do ec root_class.e to compile a class.

If you want to know more about the 6.0 release, you will find more details on our wiki EiffelStudio 6.0 Features and on our documentation site when it is released.

Happy Eiffeling. [Less]