{"id":"https://openalex.org/W2079034866","doi":"https://doi.org/10.1145/2814204.2814219","title":"Generating safe boundary APIs between typed EDSLs and their environments","display_name":"Generating safe boundary APIs between typed EDSLs and their environments","publication_year":2015,"publication_date":"2015-10-26","ids":{"openalex":"https://openalex.org/W2079034866","doi":"https://doi.org/10.1145/2814204.2814219","mag":"2079034866"},"language":"en","primary_location":{"id":"doi:10.1145/2814204.2814219","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814204.2814219","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"green","oa_url":"https://lirias.kuleuven.be/handle/123456789/514198","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5059451229","display_name":"Bob Reynders","orcid":null},"institutions":[{"id":"https://openalex.org/I39327780","display_name":"iMinds","ror":"https://ror.org/03baec336","country_code":"BE","type":"nonprofit","lineage":["https://openalex.org/I39327780"]},{"id":"https://openalex.org/I99464096","display_name":"KU Leuven","ror":"https://ror.org/05f950310","country_code":"BE","type":"education","lineage":["https://openalex.org/I99464096"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"Bob Reynders","raw_affiliation_strings":["iMinds, Belgium / KU Leuven, Belgium","iMinds, Belgium / KU Leuven, Belgium#TAB#"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium","institution_ids":["https://openalex.org/I39327780","https://openalex.org/I99464096"]},{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium#TAB#","institution_ids":["https://openalex.org/I99464096"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5011654888","display_name":"Dominique Devriese","orcid":"https://orcid.org/0000-0002-3862-6856"},"institutions":[{"id":"https://openalex.org/I39327780","display_name":"iMinds","ror":"https://ror.org/03baec336","country_code":"BE","type":"nonprofit","lineage":["https://openalex.org/I39327780"]},{"id":"https://openalex.org/I99464096","display_name":"KU Leuven","ror":"https://ror.org/05f950310","country_code":"BE","type":"education","lineage":["https://openalex.org/I99464096"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"Dominique Devriese","raw_affiliation_strings":["iMinds, Belgium / KU Leuven, Belgium","iMinds, Belgium / KU Leuven, Belgium#TAB#"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium","institution_ids":["https://openalex.org/I39327780","https://openalex.org/I99464096"]},{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium#TAB#","institution_ids":["https://openalex.org/I99464096"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5008329832","display_name":"Frank Piessens","orcid":"https://orcid.org/0000-0001-5438-153X"},"institutions":[{"id":"https://openalex.org/I39327780","display_name":"iMinds","ror":"https://ror.org/03baec336","country_code":"BE","type":"nonprofit","lineage":["https://openalex.org/I39327780"]},{"id":"https://openalex.org/I99464096","display_name":"KU Leuven","ror":"https://ror.org/05f950310","country_code":"BE","type":"education","lineage":["https://openalex.org/I99464096"]}],"countries":["BE"],"is_corresponding":false,"raw_author_name":"Frank Piessens","raw_affiliation_strings":["iMinds, Belgium / KU Leuven, Belgium","iMinds, Belgium / KU Leuven, Belgium#TAB#"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium","institution_ids":["https://openalex.org/I39327780","https://openalex.org/I99464096"]},{"raw_affiliation_string":"iMinds, Belgium / KU Leuven, Belgium#TAB#","institution_ids":["https://openalex.org/I99464096"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.09910086,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"31","last_page":"34"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9950000047683716,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9950000047683716,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9916999936103821,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10715","display_name":"Distributed and Parallel Computing Systems","score":0.9912999868392944,"subfield":{"id":"https://openalex.org/subfields/1705","display_name":"Computer Networks and Communications"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.9208489656448364},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.8859370350837708},{"id":"https://openalex.org/keywords/bytecode","display_name":"Bytecode","score":0.7080808877944946},{"id":"https://openalex.org/keywords/scala","display_name":"Scala","score":0.6716383695602417},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.6421261429786682},{"id":"https://openalex.org/keywords/javascript","display_name":"JavaScript","score":0.6311039924621582},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.5666696429252625},{"id":"https://openalex.org/keywords/domain-specific-language","display_name":"Domain-specific language","score":0.5428036451339722},{"id":"https://openalex.org/keywords/boilerplate-text","display_name":"Boilerplate text","score":0.5169224143028259},{"id":"https://openalex.org/keywords/toolchain","display_name":"Toolchain","score":0.434928834438324},{"id":"https://openalex.org/keywords/source-code","display_name":"Source code","score":0.4241727590560913},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4198695421218872},{"id":"https://openalex.org/keywords/scripting-language","display_name":"Scripting language","score":0.41286787390708923},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.37770092487335205},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.263563334941864},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.22217708826065063}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.9208489656448364},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8859370350837708},{"id":"https://openalex.org/C2779818221","wikidata":"https://www.wikidata.org/wiki/Q837330","display_name":"Bytecode","level":3,"score":0.7080808877944946},{"id":"https://openalex.org/C109701466","wikidata":"https://www.wikidata.org/wiki/Q460584","display_name":"Scala","level":3,"score":0.6716383695602417},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.6421261429786682},{"id":"https://openalex.org/C544833334","wikidata":"https://www.wikidata.org/wiki/Q2005","display_name":"JavaScript","level":2,"score":0.6311039924621582},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.5666696429252625},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.5428036451339722},{"id":"https://openalex.org/C75701414","wikidata":"https://www.wikidata.org/wiki/Q1651672","display_name":"Boilerplate text","level":2,"score":0.5169224143028259},{"id":"https://openalex.org/C2777062904","wikidata":"https://www.wikidata.org/wiki/Q545406","display_name":"Toolchain","level":3,"score":0.434928834438324},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.4241727590560913},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4198695421218872},{"id":"https://openalex.org/C61423126","wikidata":"https://www.wikidata.org/wiki/Q187432","display_name":"Scripting language","level":2,"score":0.41286787390708923},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.37770092487335205},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.263563334941864},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.22217708826065063},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.0},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.0}],"mesh":[],"locations_count":3,"locations":[{"id":"doi:10.1145/2814204.2814219","is_oa":false,"landing_page_url":"https://doi.org/10.1145/2814204.2814219","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","raw_type":"proceedings-article"},{"id":"pmh:oai:lirias2repo.kuleuven.be:123456789/514198","is_oa":true,"landing_page_url":"https://lirias.kuleuven.be/handle/123456789/514198","pdf_url":null,"source":{"id":"https://openalex.org/S7407055369","display_name":"Lirias","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Acm Sigplan Notices, vol. 51 (3), (31-34)","raw_type":"info:eu-repo/semantics/article"},{"id":"pmh:oai:vubissmart:VUBISSMART:2000:113786","is_oa":false,"landing_page_url":"https://biblio.vub.ac.be/vubir/generating-safe-boundary-apis-between-typed-edsls-and-their-environments(b2ae6aa1-a295-4ec4-acfb-1b1be8fdd968).html","pdf_url":null,"source":{"id":"https://openalex.org/S4306402573","display_name":"VUBIR (Vrije Universiteit Brussel)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I13469542","host_organization_name":"Vrije Universiteit Brussel","host_organization_lineage":["https://openalex.org/I13469542"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"article"}],"best_oa_location":{"id":"pmh:oai:lirias2repo.kuleuven.be:123456789/514198","is_oa":true,"landing_page_url":"https://lirias.kuleuven.be/handle/123456789/514198","pdf_url":null,"source":{"id":"https://openalex.org/S7407055369","display_name":"Lirias","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Acm Sigplan Notices, vol. 51 (3), (31-34)","raw_type":"info:eu-repo/semantics/article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":7,"referenced_works":["https://openalex.org/W72484077","https://openalex.org/W89198970","https://openalex.org/W1537847470","https://openalex.org/W2076414129","https://openalex.org/W2154697693","https://openalex.org/W2162053995","https://openalex.org/W6631940704"],"related_works":["https://openalex.org/W2955447707","https://openalex.org/W4233332105","https://openalex.org/W2060824677","https://openalex.org/W156394931","https://openalex.org/W2403085302","https://openalex.org/W2293614426","https://openalex.org/W1880442967","https://openalex.org/W3011166791","https://openalex.org/W2034933397","https://openalex.org/W2774238949"],"abstract_inverted_index":{"Embedded":[0],"domain":[1],"specific":[2],"languages":[3],"(EDSLs)":[4],"are":[5,17],"used":[6,18],"to":[7,35,47,112,141],"represent":[8],"special-purpose":[9],"code":[10,26,29,51,94,171],"in":[11,30,76,168],"a":[12,36,77,110,161,169],"general-purpose":[13],"language":[14,106],"and":[15,24,45,86,138],"they":[16],"for":[19,70,89],"applications":[20],"like":[21],"vector":[22],"calculations":[23],"run-time":[25],"generation.":[27],"Often,":[28],"an":[31,68],"EDSL":[32],"is":[33,53,98,148],"compiled":[34],"target":[37,127],"(e.g.":[38],"GPU":[39],"languages,":[40],"JVM":[41],"bytecode,":[42],"assembly,":[43],"JavaScript)":[44],"needs":[46],"interface":[48],"with":[49,97,123],"other":[50,60],"that":[52,56,164],"available":[54,73],"at":[55],"level":[57],"but":[58,145],"uses":[59],"data":[61,84],"representations":[62,85],"or":[63],"calling":[64,90],"conventions.":[65,91],"We":[66,119,152],"present":[67],"approach":[69,159],"safely":[71],"making":[72],"such":[74],"APIs":[75],"typed":[78],"EDSL,":[79,132],"guaranteeing":[80],"correct":[81],"conversions":[82],"between":[83],"the":[87,93,99,114,126,131,135,143],"respect":[88],"When":[92],"being":[95],"interfaced":[96],"result":[100],"of":[101,104,155,157],"static":[102,136],"compilation":[103],"host":[105],"code,":[107],"we":[108,165],"propose":[109],"way":[111],"auto-generate":[113],"needed":[115],"boilerplate":[116],"using":[117],"meta-programming.":[118],"instantiate":[120],"our":[121,146,158],"technique":[122],"JavaScript":[124],"as":[125,130,134],"language,":[128],"JS-Scala":[129],"Scala.js":[133],"compiler":[137],"Scala":[139],"macros":[140],"generate":[142],"boilerplate,":[144],"design":[147],"more":[149],"generally":[150],"applicable.":[151],"provide":[153],"evidence":[154],"usefulness":[156],"through":[160],"prototype":[162],"implementation":[163],"have":[166],"applied":[167],"non-trivial":[170],"base.":[172]},"counts_by_year":[],"updated_date":"2026-07-30T17:31:21.811387","created_date":"2025-10-10T00:00:00"}
