{"id":12660,"date":"2021-11-15T18:25:26","date_gmt":"2021-11-15T23:25:26","guid":{"rendered":"https:\/\/carleton.ca\/scs\/?page_id=12660"},"modified":"2026-06-02T14:59:26","modified_gmt":"2026-06-02T18:59:26","slug":"tr-129-eva-an-event-driven-framework-for-building-user-interfaces-in-smalltalk","status":"publish","type":"page","link":"https:\/\/carleton.ca\/scs\/research\/scs-technical-reports\/technical-reports-1987\/tr-129-eva-an-event-driven-framework-for-building-user-interfaces-in-smalltalk\/","title":{"rendered":"TR-129: Eva: An Event Driven Framework for Building User Interfaces in Smalltalk"},"content":{"rendered":"\n<section class=\"w-screen px-6 cu-section cu-section--white ml-offset-center md:px-8 lg:px-14\">\n    <div class=\"space-y-6 cu-max-w-child-5xl  md:space-y-10 cu-prose-first-last\">\n\n            <div class=\"cu-textmedia flex flex-col lg:flex-row mx-auto gap-6 md:gap-10 my-6 md:my-12 first:mt-0 max-w-5xl\">\n        <div class=\"justify-start cu-textmedia-content cu-prose-first-last\" style=\"flex: 0 0 100%;\">\n            <header class=\"font-light prose-xl cu-pageheader md:prose-2xl cu-component-updated cu-prose-first-last\">\n                                    <h1 class=\"cu-prose-first-last font-semibold !mt-2 mb-4 md:mb-6 relative after:absolute after:h-px after:bottom-0 after:bg-cu-red after:left-px text-3xl md:text-4xl lg:text-5xl lg:leading-[3.5rem] pb-5 after:w-10 text-cu-black-700 not-prose\">\n                        TR-129: Eva: An Event Driven Framework for Building User Interfaces in Smalltalk\n                    <\/h1>\n                \n                                \n                            <\/header>\n\n                    <\/div>\n\n            <\/div>\n\n    <\/div>\n<\/section>\n\n<p>Carleton University<br>\n<a href=\"https:\/\/carleton.ca\/scs\/research\/scs-technical-reports\/technical-reports-1987\/\">Technical Report<\/a> <strong>TR-129<\/strong><br>\nNovember 1987<\/p>\n\n\n\n<h2 id=\"eva-an-event-driven-framework-for-building-user-interfaces-in-smalltalk\" class=\"wp-block-heading tr_t1\">Eva: An Event Driven Framework for Building User Interfaces in Smalltalk<\/h2>\n\n\n\n<div class=\"tr_t3\">\n<div class=\"tr_t3\">\n<div class=\"tr_t3\">Jeff McAffer &amp; Dave Thomas<\/div>\n<\/div>\n<\/div>\n\n\n\n<div>\n<h3>Abstract<\/h3>\n<p>Eva is an event driven framework for implementing user interfaces in multiprocessor Smalltalk systems. Most current user interfaces systems (e.g., Smalltalk, MacApp and NeWS), while event based, use polling and coroutines to handle user interaction. This makes them hard to understand and difficult to use in multiprocessor environments. Eva uses events to drive the Actors (light weight processes) which make up the user interface. The components of the user interface are constructed from parts rather than by inheritance. This structure increases modularity and allows the interface to be distributed over several processors. Comprehensive event management and synthesis simplify the creation of new parts. Eva is useful in both uni-and multiprocessor systems.<\/p>\n<\/div>\n\n\n\n<p><a href=\"https:\/\/carleton.ca\/scs\/wp-content\/uploads\/sites\/260\/tr-129.pdf\">TR-129.pdf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Carleton University Technical Report TR-129 November 1987 Eva: An Event Driven Framework for Building User Interfaces in Smalltalk Jeff McAffer &amp; Dave Thomas Abstract Eva is an event driven framework for implementing user interfaces in multiprocessor Smalltalk systems. Most current user interfaces systems (e.g., Smalltalk, MacApp and NeWS), while event based, use polling and coroutines [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":11827,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_cu_dining_location_slug":"","footnotes":"","_links_to":"","_links_to_target":""},"cu_page_type":[],"class_list":["post-12660","page","type-page","status-publish","hentry"],"acf":{"cu_post_thumbnail":false},"_links":{"self":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/pages\/12660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/comments?post=12660"}],"version-history":[{"count":1,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/pages\/12660\/revisions"}],"predecessor-version":[{"id":12661,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/pages\/12660\/revisions\/12661"}],"up":[{"embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/pages\/11827"}],"wp:attachment":[{"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/media?parent=12660"}],"wp:term":[{"taxonomy":"cu_page_type","embeddable":true,"href":"https:\/\/carleton.ca\/scs\/wp-json\/wp\/v2\/cu_page_type?post=12660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}