000108498 001__ 108498
000108498 005__ 20211122153225.0
000108498 0247_ $$2doi$$a10.1016/j.sysarc.2020.101784
000108498 0248_ $$2sideral$$a118105
000108498 037__ $$aART-2020-118105
000108498 041__ $$aeng
000108498 100__ $$0(orcid)0000-0001-7853-3622$$aMosteo, Alejandro R.
000108498 245__ $$aReactive programming in Ada 2012 with RxAda
000108498 260__ $$c2020
000108498 5060_ $$aAccess copy available to the general public$$fUnrestricted
000108498 5203_ $$aThe ReactiveX API, also known as the Reactive Extensions in the. NET world, is a popular functional reactive programming framework for asynchronous, event-based, multithreaded programming. Although Ada built-in tasking reduces the dire needs for additional multithreading support of some other languages, the reactive approach has properties that are well-suited to the safety and maintainability culture predominant in the Ada world, such as complexity reduction, well-defined concurrency semantics, and enhanced legibility by means of concise and explicit information flows appealing to imperative reasoning. This work presents the design of a ReactiveX Ada implementation that aims to balance desirable library properties such as compile-time type-safety, amount of user-required generic instantiations, and a smooth learning curve for both library clients and maintainers. Concurrency design aspects of the library are detailed, showing how the Flat_Map and Thread abstractions have been implemented following Ada programming expectations, in particular with regard to task termination. In the intervening time from its first presentation, the library has gained implemented operators to the point of having all fundamental building blocks available. With RxAda, the Ada programmer can henceforth benefit from the abundant documentation existing for the language-agnostic ReactiveX approach without stepping out of the Ada tool chain.
000108498 536__ $$9info:eu-repo/grantAgreement/ES/DGA-FSE/T45-17R$$9info:eu-repo/grantAgreement/ES/DGA-FSE/T45-20R$$9info:eu-repo/grantAgreement/ES/MINECO-AEI-FEDER/DPI2016-76676-R$$9info:eu-repo/grantAgreement/ES/UZ/CUD2018-03$$9info:eu-repo/grantAgreement/ES/UZ/CUD2019-05
000108498 540__ $$9info:eu-repo/semantics/openAccess$$aby-nc-nd$$uhttp://creativecommons.org/licenses/by-nc-nd/3.0/es/
000108498 590__ $$a3.777$$b2020
000108498 591__ $$aCOMPUTER SCIENCE, SOFTWARE ENGINEERING$$b19 / 108 = 0.176$$c2020$$dQ1$$eT1
000108498 591__ $$aCOMPUTER SCIENCE, HARDWARE & ARCHITECTURE$$b17 / 53 = 0.321$$c2020$$dQ2$$eT1
000108498 592__ $$a0.597$$b2020
000108498 593__ $$aSoftware$$c2020$$dQ1
000108498 593__ $$aHardware and Architecture$$c2020$$dQ1
000108498 655_4 $$ainfo:eu-repo/semantics/article$$vinfo:eu-repo/semantics/acceptedVersion
000108498 773__ $$g110 (2020), 101784 [11 pp]$$pJ. systems archit.$$tJournal of Systems Architecture$$x1383-7621
000108498 8564_ $$s602212$$uhttps://zaguan.unizar.es/record/108498/files/texto_completo.pdf$$yPostprint
000108498 8564_ $$s3087870$$uhttps://zaguan.unizar.es/record/108498/files/texto_completo.jpg?subformat=icon$$xicon$$yPostprint
000108498 909CO $$ooai:zaguan.unizar.es:108498$$particulos$$pdriver
000108498 951__ $$a2021-11-22-14:00:06
000108498 980__ $$aARTICLE