Eiffel.NET and Vision2 Breaks!

55 views
Skip to first unread message

Larry Rix

unread,
Dec 3, 2017, 8:32:54 AM12/3/17
to Eiffel Users
I added Vision2 library to an Eiffel.NET project and BOOM! Breaks. What the heck?

******************************** Thread exception *****************************
In thread           Root thread            0x0 (thread id)
*******************************************************************************
-------------------------------------------------------------------------------
Class / Object      Routine                Nature of exception           Effect
-------------------------------------------------------------------------------
EXTERNAL_CLASS_C    matching_external_feature_in @5
<00000000135B60FC>                         Feature call on void target.  Fail
-------------------------------------------------------------------------------
EXTERNAL_CLASS_C    matching_external_feature_in @5
<00000000135B60FC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EXTERNAL_CLASS_C    update_feature_with_parents @4
<00000000135B60FC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EXTERNAL_CLASS_C    process_features @158                               
<00000000135B60FC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EXTERNAL_CLASS_C    process_degree_4 @20                                
<00000000135B60FC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
DEGREE_4            process_class @3                                    
<0000000015778108>                         Routine failure.              Rescue
-------------------------------------------------------------------------------
DEGREE_4            execute @63                                         
<0000000015778108>                         Routine failure.              Fail
-------------------------------------------------------------------------------
SYSTEM_I            process_degree_4 @1                                 
<000000000AB0F570>                         Routine failure.              Fail
-------------------------------------------------------------------------------
SYSTEM_I            do_recompilation @56                                
<000000000AB0F570>                         Routine failure.              Fail
-------------------------------------------------------------------------------
SYSTEM_I            recompile @7                                        
<000000000AB0F570>                         Routine failure.              Rescue
-------------------------------------------------------------------------------
WORKBENCH_I         recompile @23                                       
<000000000EA4E8AC>                         Routine failure.              Rescue
-------------------------------------------------------------------------------
E_PROJECT           melt @7                                             
<000000000EA3C2DC>                         Routine failure.              Rescue
-------------------------------------------------------------------------------
E_PROJECT           quick_melt @3                                       
<000000000EA3C2DC>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    perform_compilation @1 
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    compile @5             
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    compile_and_run @1     
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    confirm_execution_halt @2
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    confirm_and_compile @1 
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    compile_no_save @4     
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    execute_with_c_compilation_flag @16
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    go_on_compile @1       
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_MELT_PROJECT_COMMAND
                    execute @12            
<000000000AB68E98>                         Routine failure.              Fail
-------------------------------------------------------------------------------
PROCEDURE           call @4                                             
<000000000AD5FC38>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  call_separate_action @1
<000000000AC40658>  (From EV_APPLICATION_I)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  process_event_queue @48
<000000000AC40658>  (From EV_APPLICATION_I)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_HANDLER
                    process_application_event_queue @1
<000000000AC408C8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_HANDLER
                    launch @3              
<000000000AC408C8>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION      internal_launch_application @2
<000000000AC40868>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION      launch @4                                           
<000000000AC40868>                         Routine failure.              Fail
-------------------------------------------------------------------------------
ES_GRAPHIC          make @4                                             
<000000000AC40850>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_KERNEL           make @4                                             
<000000000AB21CC0>                         Routine failure.              Fail
-------------------------------------------------------------------------------
EB_KERNEL           root's creation                                     
<000000000AB21CC0>                         Routine failure.              Exit
-------------------------------------------------------------------------------

Larry Rix

unread,
Dec 3, 2017, 8:43:03 AM12/3/17
to Eiffel Users
Figured it out!

1. Create a new Eiffel.NET project, where the project generator creates a project with a root class of APPLICATION.make
2. Attempt to add the Vision2 library
3. Recompile --> Complains that there are now two APPLICATION classes (one that was generated and the other in the Vision2 library--I think).
4. Manually edit the APPLICATION.e class on the drive, changing its name to something like MY_APP.e and changing the code class name from APPLICATION --> MY_APP and save it.
5. Using the Project tool, change the root class name to MY_APP and "make".
6. Delete the EIFGENs to force a clean compile
7. BOOM! ... the error trace above shows up (did for me anyway).

It turns out that the error was coming from the ECF which apparently did not get changed with APPLICATION --> MY_APP. This seems to be the source of the problem.

1. Start to launch Eiffel Studio.
2. Select the application and edit the project.
3. Access the root class part of the ECF in the dialog.
4. Note that it is still APPLICATION and not MY_APP.
5. Change from APPLICATION --> MY_APP
6. Remove Vision2 library.
7. SUCCESS!!! --> application is back to compiling (as before)
8. Add Vision2 library --> recompile
9. Clean compile it if you like --> SUCCESS!!! ought to be working alright now.

Interesting that there are stray Void target calls in a Void safe system :-)

Larry Rix

unread,
Dec 3, 2017, 9:03:37 AM12/3/17
to Eiffel Users
So--I can add EV to the library list, but I cannot use it.

Using EV_APPLICATION causes linker problems and the only way back is a clean compile.

I can only envision that I must use the visual classes from Microsoft .NET libraries somehow.

Larry Rix

unread,
Dec 3, 2017, 9:11:00 AM12/3/17
to Eiffel Users
WOW -- this just get's better and better.

So—now I add the System.Windows.Forms to attempt to bring in:

form: FORM

create form

and the thing crashes IMMEDIATELY upon compile!


20171203_err_on_add_windows_forms_then_add_form_reference_with_create.txt

Larry Rix

unread,
Dec 3, 2017, 2:39:38 PM12/3/17
to Eiffel Users
QUESTION: Do these failures have to do with Managed Code? For example: Is the failure of Vision2 have to do with how it wraps WEL and WEL reaches out to Windows controls in DLL files, which are not managed code?

I just tried to bring in the SQLite3 library and got another failure.

Each library that seems to reach beyond pure Eiffel code to external C, inline C, or DLLs appears to be an issue.

If this is the case, how does one get a GUI? I'd hate to think I have to keep Eiffel.NET relegated to the business tier as an assembly added to a C#.NET Solution Project!

ALSO: Can I code in Eiffel right in Visual Studio? Is that possible? That would be WONDERFUL if I could.

Feedback is greatly needed!

Peter Gummer

unread,
Dec 3, 2017, 2:58:04 PM12/3/17
to 'Alexander Kogtenkov' via Eiffel Users
Larry Rix <lar...@moonshotsoftware.com> wrote:
>
> ALSO: Can I code in Eiffel right in Visual Studio? Is that possible? That would be WONDERFUL if I could.


Hi Larry,

I was doing exactly that circa 2005. Back then Eiffel Software sold a Visual Studio plugin called Envision which worked very well, featuring syntax highlighting and much more.

Regard,
Peter

Larry Rix

unread,
Dec 3, 2017, 6:05:01 PM12/3/17
to Eiffel Users
https://www.bmtmicro.com/BMTCatalog/win/eiffelenvision.html

Looks like this is stale and expensive. I don't know if it still works or not.

Microsoft is releasing its new Microsoft .NET Core product, which appears to be taking .NET into the open-source and cross-platform market in baby steps.

I would love for Eiffel to come along for that ride, but I am growing more and more frustrated with even considering using Eiffel as I keep hitting roadblocks. I had hoped to use Eiffel together with the rich set of .NET frameworks and perhaps I still can if I code core business tier microservices in Eiffel and then consume them from a .NET front-end (Windows Desktop, ASP.NET and others, yes?).

What is truly disheartening is that I cannot load the testing library and over the years I have grown to highly depend on that in order to follow the TDD paradigm of code-a-little-test-a-little in a stepwise dev process. To suddenly have testing ripped away from me might even DOOM my thought of using Eiffel.NET as a Business Tier source as well.

I am at wits end.

Larry Rix

unread,
Dec 5, 2017, 9:24:12 AM12/5/17
to Eiffel Users
Is there any way I can use Vision2 in an Eiffel.NET project? Am I really stuck doing all of desktop app from Visual Studio using Windows.Forms?

Anthony W

unread,
Dec 5, 2017, 10:39:43 AM12/5/17
to eiffel...@googlegroups.com
I just want to echo Larry's frustration - these are pretty much the same one's I had a couple of years ago.

I love the concepts that Eiffel and in particular ISE Eiffel, bring to the table for software engineering: DbC, minimalist compiling/freezing, a seamless architecture to design to code process, SCOOP - just to name a few.
But I hate to say it - unless the community and ISE step up their focus on 

1) Creating "how to" content addressing the more involved aspects of using Eiffel (e.g. leveraging .NET GUI for Eiffel applications), and 
2) Making Eiffel interface more easily and seamlessly with other primary technologies (.NET, graphics libraries, etc) 

Eiffel will continue to remain a 3rd tier choice as a technology solution.

I hear of solutions being implemented with C++, C#, Java, VB, Python, Lua, and JS... but with Eiffel? Other than Huberts (awesome) game, the EHS system, and the solutions ISE has listed, I never hear of something done with Eiffel. 

Sorry if this comes across as a "I hate Eiffel" post; I don't. I would just like the fantastic team at ISE and Dr. Meyer to know how I feel as a C# developer - that I (and other developers like me) really won't be able to jump ship to Eiffel until 1) and 2) from above are addressed. To *ME*, that's much more important than a new ECMA standard, or a new keyword addition, or some of the other topics that have come up in recent history.

Anthony

On Tue, Dec 5, 2017 at 8:24 AM, Larry Rix <lar...@moonshotsoftware.com> wrote:
Is there any way I can use Vision2 in an Eiffel.NET project? Am I really stuck doing all of desktop app from Visual Studio using Windows.Forms?

--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/eiffel-users.
For more options, visit https://groups.google.com/d/optout.

Larry Rix

unread,
Dec 5, 2017, 11:12:39 AM12/5/17
to Eiffel Users
Anthony,

I actually LOVE Eiffel. I want to use it all the time. The roadblocks are just too numerous.

I have two potential paying clients and I am STUCK! Absolutely STUCK!

From within the Eiffel.NET project, I cannot use Vision2. I cannot use the AutoTest. I cannot use the .NET Windows Forms (apparently). All I appear to be able to do is code pure business tier logic and make access to database backends using passthrough code that I have written on the C# side and then make the calls from Eiffel.NET.

This morning, I quickly coded (and have working) a primitive set of testing classes which work very close to the way testing works in EiffelStudio AutoTest, except the outputs of the tests are sent to a local text file. I at least  divide the test results into PASS and FAIL list, putting the failures at the top, so they can be easily found. I even wrote code that assures the assertion tags are unique so one can just copy-paste-search for the tag from the text file directly in the Eiffel code.

The above will allow me to hobble-along when it comes to TDD.

However, what is truly maddening is that my Eiffel code is relegated to a red-headed-step-child status of a black box module of purely Business Tier code. No direct data. No direct GUI. I suppose if I take a mobile-first and web-first attitude, then perhaps this is not so bad. I can just live with Eiffel modules living behind a .NET web front end. That completely negates the reason for having Eiffel Web Framework.

Now, with the advent of Microsoft .NET Core, I am wondering how much further away having Eiffel as a "good choice" is going to get.

This is truly sad. Truly, TRULY SAD! I am just about finished waving the banner, except for the one that says, "Rest in Peace".
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com.

Larry Rix

unread,
Dec 5, 2017, 11:19:39 AM12/5/17
to Eiffel Users
Here is a sample of the testing code and how it looks.

The idea was really simple to dream up and then code out and test. It works really well (so far).

I guess I am stuck with business tier processing only. Sucks.
MOM_TEST_run_tests_code.png

Larry Rix

unread,
Dec 5, 2017, 11:22:58 AM12/5/17
to Eiffel Users

Creates the following output file:

Larry Rix

unread,
Dec 5, 2017, 11:25:49 AM12/5/17
to Eiffel Users

And the ENET_ASSERTIONS has all of the assertion_* logic.

Jonathan Ostroff

unread,
Dec 5, 2017, 1:30:16 PM12/5/17
to 'Alexander Kogtenkov' via Eiffel Users, Larry Rix


On Dec 5, 2017, at 11:12 AM, Larry Rix <lar...@moonshotsoftware.com> wrote:

From within the Eiffel.NET project, I cannot use Vision2. I cannot use the AutoTest. I cannot use the .NET Windows Forms (apparently). All I appear to be able to do is code pure business tier logic and make access to database backends using passthrough code that I have written on the C# side and then make the calls from Eiffel.NET.

This morning, I quickly coded (and have working) a primitive set of testing classes which work very close to the way testing works in EiffelStudio AutoTest, except the outputs of the tests are sent to a local text file. I at least  divide the test results into PASS and FAIL list, putting the failures at the top, so they can be easily found. I even wrote code that assures the assertion tags are unique so one can just copy-paste-search for the tag from the text file directly in the Eiffel code.

The above will allow me to hobble-along when it comes to TDD.

Hi Larry:

The ESpec unit testing library works with estudio17.05 in void safe mode and is part of the standard distribution. It reports results with a red/green bar in a browser as well as at the command line. 




Regards,

Jonathan

Ian Joyner

unread,
Dec 5, 2017, 6:39:32 PM12/5/17
to Eiffel Users
I’ve been submitting answers and comments to Quora recently. I still think the need for a modern language is critical at this time – even more so due to security.

Eiffel has been discussed on Quora and maybe this thread is of relevance, although I can’t vouch for the accuracy of the comments. But incorrect perceptions are bad too. (Hmmm, this industry is ruled by incorrect perceptions.)


Ian

Ian Joyner

unread,
Dec 6, 2017, 4:34:15 AM12/6/17
to Eiffel Users
I have also put an answer to a Quora question about Eiffel at:

https://www.quora.com/What-can-you-say-about-Eiffel-programming-language

Ian

Larry Rix

unread,
Dec 6, 2017, 10:10:17 AM12/6/17
to Eiffel Users
Hi Jonathan!

Is it correct to conclude that ESpec does the following:

1. Places test results in an HTML document where it is view-capable in a browser VS what I have, which is just a simple text file?
2. ESpec uses inheritance coupled with Workbench Run to execute the test code added to various classes?

The example in the link appears to make the above assertions true.

I do see the advantage of using HTML as an output. That's rather clever actually. So clever (in fact), that I will steal that and put it into the output of my own using the HTML library I wrote in Eiffel some time back.

Whether HTML or text, the disadvantage remains: AutoTest is built into the EiffelStudio IDE, where it works in seamless concert with the development cycle. External files cannot as easily live in that cycle-of-action.

However—upon further reflection and consideration, I can see where a BLAH_TEST_SET class could have a note-clause with an EIS link to a statically name HTML output file that could be accessed easily and handily from the IDE! That would address the cumbersome nature of gaining quick/simple/easy access to the test results on a per-test-class basis.

Very interesting stuff.

Thanks, Jonathan!

Cheers!

Jonathan Ostroff

unread,
Dec 6, 2017, 9:07:32 PM12/6/17
to eiffel...@googlegroups.com
Hi Larry:

On Dec 6, 2017, at 10:10 AM, Larry Rix <lar...@moonshotsoftware.com> wrote:

Hi Jonathan!

Is it correct to conclude that ESpec does the following:

1. Places test results in an HTML document where it is view-capable in a browser VS what I have, which is just a simple text file?

Yes, it displays in a browser (if you so choose) and always at the console.

2. ESpec uses inheritance coupled with Workbench Run to execute the test code added to various classes?

Yes. You can also press Control-Alt-F5. The default browser should appear and display the green/red bar together with test details. This should happen every time you invoke Control-Alt-F5. So feedback is easy to obtain relatively quickly (F7 to compile and Control-Alt-F5). 

It is advisable to do a freeze every now again, not due to a deficiency in ESpec, but because the W-code can get out of sync. 

The example in the link appears to make the above assertions true.

I do see the advantage of using HTML as an output. That's rather clever actually. So clever (in fact), that I will steal that and put it into the output of my own using the HTML library I wrote in Eiffel some time back.

Whether HTML or text, the disadvantage remains: AutoTest is built into the EiffelStudio IDE, where it works in seamless concert with the development cycle. External files cannot as easily live in that cycle-of-action.

True. AutoTest has many advantages. 

We developed ESpec to be used in teaching environment and we try to keep it up to date as Eiffel evolves. So we require Void Safety in all student projects. AutoTest does not yet appear to work with Void safe code. 

Another great benefit is that AutoTest can be used to generate tests automatically. But we found that it did not always work with some of our more complex classes, using agents. etc. 

Manu has provided us with great help keeping it part of the Eiffel contributed library. 

Regards,

Jonathan

However—upon further reflection and consideration, I can see where a BLAH_TEST_SET class could have a note-clause with an EIS link to a statically name HTML output file that could be accessed easily and handily from the IDE! That would address the cumbersome nature of gaining quick/simple/easy access to the test results on a per-test-class basis.

Very interesting stuff.

Thanks, Jonathan!

Cheers!

Larry Rix

unread,
Dec 7, 2017, 6:39:26 AM12/7/17
to Eiffel Users
Thanks for the input, Jonathan! I will attempt an implementation.

To be sure I understand—did you create ESpec in response to Eiffel.NET not having an AutoTest implementation? Is this specifically designed for that purpose?

Jonathan Ostroff

unread,
Dec 7, 2017, 7:52:20 AM12/7/17
to 'Alexander Kogtenkov' via Eiffel Users

> On Dec 7, 2017, at 6:39 AM, Larry Rix <lar...@moonshotsoftware.com> wrote:
> Thanks for the input, Jonathan! I will attempt an implementation.
> To be sure I understand—did you create ESpec in response to Eiffel.NET not having an AutoTest implementation? Is this specifically designed for that purpose?


Larry,

It did not have to do with .NET. The original implementation of ESpec predates AutoTest by many years. It was done to encourage our students to develop a TDD mindset.

Regards,

Jonathan

Larry Rix

unread,
Dec 7, 2017, 7:53:30 AM12/7/17
to eiffel...@googlegroups.com
Ah, okay! I was not aware of ESpec predating AutoTest. Now, I get it.

Larry Rix
Moonshot Software
Rocket science for everyone!
Savannah, GA

--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages