{"id":7890,"date":"2023-11-17T11:00:28","date_gmt":"2023-11-17T11:00:28","guid":{"rendered":"https:\/\/www.dyalog.com\/blog\/?p=7890"},"modified":"2023-11-17T21:36:48","modified_gmt":"2023-11-17T21:36:48","slug":"dyalog-23-videos-week-3-dyalog-core-development","status":"publish","type":"post","link":"https:\/\/www.dyalog.com\/blog\/2023\/11\/dyalog-23-videos-week-3-dyalog-core-development\/","title":{"rendered":"Dyalog \u201923 Videos: Week 3 \u2013 Dyalog Core Development"},"content":{"rendered":"<p>This week&#8217;s collection consists of presentations by members of the development team, and concentrates on language features and development tools that the developers are currently designing or already implementing. Many of these features are likely to be in version 20.0 of Dyalog, which we plan to release in early 2025, about a year after version 19.0 becomes available. In other words, there is still time to comment on these ideas and propose changes or additions&#8230;please take a look and let us know your thoughts!<\/p>\n<p>John Daintree presents an update to the design (and prototype implementation) of so-called Token-by-Token (TBT) debugging, which will make it possible to step through code one primitive at a time rather than one line at a time. This promises to be a wonderful teaching tool, and will also help experienced users debug complex expressions \u2013 especially trains and other tacit constructs.<\/p>\n<p>In the presentation on &#8220;Setting and Getting Variable Values&#8221;, Ad\u00e1m Brudzewsky proposes extensions that will simplify (and speed up) a number of frequently-occurring patterns, where application code needs to reference or update variables based on arrays containing variable names. At the moment, most solutions require complicated, inefficient, and uncomfortable uses of the execute primitive (which some code scanners might identify as potentially unsafe).<\/p>\n<p>Ad\u00e1m&#8217;s second presentation also proposes ways to simplify frequently-occurring use cases, this time related to a relatively recent addition to the Dyalog language, the <em>key<\/em> operator (<code class=\"language-apl\">\u2338<\/code>). Similar to an SQL &#8220;group by&#8221; clause, <em>key<\/em> performs operations on groups of data that are partitioned using key values \u2013 and it suffers from similar issues if you want the results to be in a particular order, or include entries for key values that do not occur in the data which is at hand.<\/p>\n<p>Peter Mikkelsen proposes a new mechanism for making shell commands from Dyalog. Rather than extending the existing mechanism (<code class=\"language-apl\">\u2395SH<\/code> and its synonym <code class=\"language-apl\">\u2395CMD<\/code>), which is widely used by existing code bases, Peter proposes a new system function that will manage both binary and encoded input and output, and include features such as whether to error on a non-zero exit code and ways to redirect input and output<\/p>\n<p>The final talk in this block is by Kamila Szewczyk, a student from Saarland University, who was an intern at Dyalog Ltd this summer. In this whirlwind talk, she covers her implementation of a prototype of an <a href=\"https:\/\/aplwiki.com\/wiki\/Array_notation\" target=\"_blank\" rel=\"noopener\">APL Array Notation<\/a> deserialiser, which will be available as an I-Beam in version 19.0, and probably used by Link 4.0. When she needed a break from that project, she created internal experimental builds of the interpreter to try out a large number of interesting ideas that are present in other array language implementations, such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Automatic_differentiation\" target=\"_blank\" rel=\"noopener\">automatic numerical differentiation<\/a>, the <a href=\"https:\/\/code.jsoftware.com\/wiki\/Vocabulary\/codot\" target=\"_blank\" rel=\"noopener\">obverse operator<\/a>, and a <a href=\"https:\/\/www.jsoftware.com\/papers\/satn42.htm\" target=\"_blank\" rel=\"noopener\">monadic inner product<\/a> where, for example, <code class=\"language-apl\">-.\u00d7<\/code> computes the determinant.<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>This week&#8217;s videos:<\/p>\n<ul>\n<li><a href=\"https:\/\/dyalog.tv\/Dyalog23\/?v=CohsPaCIh4s\" target=\"_blank\" rel=\"noopener\">D03: Dyalog Version 20.0 \u2013 Part 1 (John Daintree)<\/a><\/li>\n<li><a href=\"https:\/\/dyalog.tv\/Dyalog23\/?v=eya2FlHinHE\" target=\"_blank\" rel=\"noopener\">D04: Setting and Getting Variable Values (Ad\u00e1m Brudzewsky)<\/a><\/li>\n<li><a href=\"https:\/\/dyalog.tv\/Dyalog23\/?v=bQkYsT4hTH0\" target=\"_blank\" rel=\"noopener\">D05: Revisiting <code class=\"language-apl\">\u2395SH<\/code> and <code class=\"language-apl\">\u2395CMD<\/code> (Peter Mikkelsen)<\/a><\/li>\n<li><a href=\"https:\/\/dyalog.tv\/Dyalog23\/?v=BXUpQUS9pQE\" target=\"_blank\" rel=\"noopener\">D13: Giving Key a Vocabulary (Ad\u00e1m Brudzewsky)<\/a><\/li>\n<li><a href=\"https:\/\/dyalog.tv\/Dyalog23\/?v=ToQoJ1Bbpus\" target=\"_blank\" rel=\"noopener\">U16: An Implementation of APL Array Notation (Kamila Szewczyk)<\/a><\/li>\n<\/ul>\n<p>Materials for all presentations can be downloaded from the <a href=\"https:\/\/www.dyalog.com\/user-meetings\/dyalog23.htm\" target=\"_blank\" rel=\"noopener\">Dyalog &#8217;23 webpage<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week&#8217;s collection consists of presentations by members of the development team, and concentrates on language features and development tools that the developers are currently designing or already implementing. Many of these features are likely to be in version 20.0 &hellip; <a href=\"https:\/\/www.dyalog.com\/blog\/2023\/11\/dyalog-23-videos-week-3-dyalog-core-development\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,55,4,6],"tags":[],"class_list":["post-7890","post","type-post","status-publish","format-standard","hentry","category-cto","category-dyalog-23","category-events","category-videos"],"_links":{"self":[{"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/posts\/7890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/comments?post=7890"}],"version-history":[{"count":21,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/posts\/7890\/revisions"}],"predecessor-version":[{"id":8042,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/posts\/7890\/revisions\/8042"}],"wp:attachment":[{"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/media?parent=7890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/categories?post=7890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dyalog.com\/blog\/wp-json\/wp\/v2\/tags?post=7890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}