2,951
edits
(→Versions: Links to 11.0–13.2) |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 77: | Line 77: | ||
| 10.1 || 2004 || July || Multiple arguments in [[tradfn]] headers, thread tokens, 64-bit component files, value tips | | 10.1 || 2004 || July || Multiple arguments in [[tradfn]] headers, thread tokens, 64-bit component files, value tips | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#11.0|11.0]] || 2006 || October || [[Object-oriented programming]] (classes, objects, interfaces) modelled after [[wikipedia:C-Sharp_|C#]], [[Squad indexing|Index]] (<source lang=apl inline>⌷</source>), [[Power operator]] (<source lang=apl inline>⍣</source>), [[GCD]] (<source lang=apl inline>∨</source>), [[LCM]] (<source lang=apl inline>∧</source>) | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#12.0|12.0]] || 2008 || August || [[Unicode]] support (<source lang=apl inline>⎕AVU</source>, <source lang=apl inline>⎕UCS</source>), <source lang=apl inline>⎕FCOPY</source>, <source lang=apl inline>⎕FPROPS</source> | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#12.1|12.1]] || 2009 || November || [[I-Beam]] (<source lang=apl inline>⌶</source>), [[Table]] (<source lang=apl inline>⍪</source>), <source lang=apl inline>⎕XML</source>, <source lang=apl inline>⎕FCHK</source>, [[User command]]s | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#13.0|13.0]] || 2011 || April || [[Left]] (<source lang=apl inline>⊣</source>), [[Right]] (<source lang=apl inline>⊢</source>), [[Variant]] (<source lang=apl inline>⍠</source>), <source lang=apl inline>⎕OPT</source>, <source lang=apl inline>⎕R</source>, <source lang=apl inline>⎕S</source>, <source lang=apl inline>⎕PROFILE</source>, <source lang=apl inline>⎕RSI</source>, [[complex number]] and [[decimal float]] support, short arguments for [[Take]], [[Drop]], and [[Squad indexing|Index]] (<source lang=apl inline>↑</source>, <source lang=apl inline>↓</source>, <source lang=apl inline>⌷</source>) | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#13.1|13.1]] || 2012 || April || <source lang=apl inline>⎕DMX</source>, <source lang=apl inline>⎕FHIST</source> | ||
|- | |- | ||
| | | [[Dyalog_APL_versions#13.2|13.2]] || 2013 || January || Array [[Editor]] | ||
|- | |- | ||
| [[Dyalog_APL_versions#14.0|14.0]] || 2014 || June || [[Train]]s, [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), [[Rank operator]] (<source lang=apl inline>⍤</source>), multi-threading with [[future]]s and [[isolate]]s | | [[Dyalog_APL_versions#14.0|14.0]] || 2014 || June || [[Train]]s, [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), [[Rank operator]] (<source lang=apl inline>⍤</source>), [[High-rank set functions|high-rank]] [[Index Of]], multi-threading with [[future]]s and [[isolate]]s | ||
|- | |- | ||
| [[Dyalog_APL_versions#14.1|14.1]] || 2015 || June || <source lang=apl inline>:Disposable</source> [[.NET]] objects and resources, gesture support, many new I-beams | | [[Dyalog_APL_versions#14.1|14.1]] || 2015 || June || <source lang=apl inline>:Disposable</source> [[.NET]] objects and resources, gesture support, many new I-beams | ||
Line 255: | Line 255: | ||
| <source lang=apl inline>f∘g</source> ||colspan=2| [[Beside]] | | <source lang=apl inline>f∘g</source> ||colspan=2| [[Beside]] | ||
|- | |- | ||
| <source lang=apl inline>f⍤B</source> ||colspan=2| [[Rank]] | | <source lang=apl inline>f⍤B</source> ||colspan=2| [[Rank operator|Rank]] | ||
|- | |- | ||
| <source lang=apl inline>f⍤g</source> ||colspan=2| [[Atop]] | | <source lang=apl inline>f⍤g</source> ||colspan=2| [[Atop]] | ||
Line 277: | Line 277: | ||
== Implementation == | == Implementation == | ||
Dyalog APL is implemented primarily in [[wikipedia:C (programming language)|C]] with some parts implemented in [[wikipedia:C++|C++]] in order to use [[wikipedia:C++#Templates|templates]]. C [[wikipedia:Intrinsic function|intrinsics]] are used to access instruction set extensions. Some architecture-specific [[wikipedia:Assembly language|assembly]], both compiled separately and inline from C, is used for functionality like [[wikipedia:Status register|exception flags]] which is not easily accessible in C. Prior to [[Dyalog APL versions#17.0|version 17.0]], assembly was also used for vectorized arithmetic. In 17.0, this code was replaced by a new C++ implementation. | |||
=== Internal types === | === Internal types === | ||
Line 303: | Line 305: | ||
* As of version 17.1, POWER7 and above are supported. Support for older systems is dropped because Dyalog compiles separate binaries for each POWER architecture. | * As of version 17.1, POWER7 and above are supported. Support for older systems is dropped because Dyalog compiles separate binaries for each POWER architecture. | ||
In Dyalog 17.0, the code for | In Dyalog 17.0, the code for vectorized [[scalar function]]s was unified and extended to allow Intel [[wikipedia:AVX2|AVX2]] and ARM NEON in addition to Intel [[wikipedia:SSE2|SSE2]] and [[wikipedia:SSE4.1|SSE4.1]], and AltiVec VMX for IBM POWER. This code is also used for operations involving the scalar dyadics [[Plus]], [[Minus]], [[Times]], [[Divide]], [[Maximum]], [[Minimum]], and [[comparison function]]s, as well as some functions derived from operators applied to these functions, such as the [[Outer Product]] and [[Inner Product]]. | ||
Dyalog also uses many other x86 extensions: | Dyalog also uses many other x86 extensions: |