Futhark (programming language): Difference between revisions

Content deleted Content added
Also has type inference
Template:Infobox programming language, WP:REFerence WP:CITation: parameters: add, reorders, update-standardizes, conform to master templates. WP:LINKs: underscores > spaces, update-standardizes, needless: WP:PIPEs > WP:NOPIPEs, semi-WP:EASTEREGGs for WP:LEAST surprise, adds. MOS:FIRSTABBReviations clarify, define before WP:ABBRs in parentheses. WP:CATEGORYs add.
Line 1:
{{Infobox programming language
|name = Futhark
|paradigm = [[arrayArray programming|Array]], [[Functional programming|functional]]
|family = [[ML (programming language)|ML]]
|year = 2014
|designer = Troels Henriksen, Cosmin Oancea, Martin Elsman
|developer = [[University of Copenhagen]]<ref>{{Cite web |title=License |url=https://futhark-lang.org/license.html |access-date=2023-03-26 |website=futhark-lang.org |quote=Developed at [[UCPH_Department_of_Computer_ScienceUCPH Department of Computer Science|DIKU]]}}</ref>
|released = {{Start date and age|2014}}
|latest release version =
|latest release date =
|typing = [[Type inference|Inferred]], [[staticStatic typing|static]], [[strongStrong and weak typing|strong]]
|implementations =
|dialects =
|influenced_byinfluenced by = [[APL (programming language)|APL]], [[Haskell (programming language)|Haskell]], [[NESL]], [[Standard ML]]
|influenced =
|operating_system = [[Cross-platform]]
|license = [[ISC license|ISC]]
|website = https://{{URL|futhark-lang.org}}
}}
 
'''Futhark''' is a [[functional programming|functional]] [[data parallelism|data parallel]] [[array programming|array]] [[programming language]] originally developed at [[DIKUUCPH Department of Computer Science]] (DIKU) as part of the HIPERFIT project.<ref>{{cite web |url=http://hiperfit.dk/ |title=Home |website=hiperfit.dk}}</ref> It focuses on enabling data parallel programs written in a functional style to be executed with high performance on massively parallel hardware, in particular on [[GPGPU|GPUgraphics processing unit]]s. (GPUs). Futhark is strongly inspired by [[NESL]], and its implementation uses a variant of the [[flattening transformation]], but imposes constraints on how parallelism can be expressed in order to enable more aggressive compiler optimisations. In particular, irregular nested data parallelism is not supported.<ref>{{cite conference |url=https://futhark-lang.org/publications/pldi17.pdf|title=Futhark: Purely Functional GPU-Programming with Nested Parallelism and In-Place Array Updates|last1=Henriksen |first1=Troels |last2=Serup |first2=Niels G. W. |last3=Elsman |first3=Martin |last4=Henglein |first4=Fritz |last5=Oancea |first5=Cosmin |date=2017 |url=https://futhark-lang.org/publications/pldi17.pdf |title=Futhark: Purely Functional GPU-Programming with Nested Parallelism and In-Place Array Updates |publisher=ACM |book-title=Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation |conference=PLDI 2017}}</ref>
 
== Overview ==
 
Futhark is a language in the [[ML (programming language)|ML]] family, with an indentation-insensitive syntax derived from [[OCaml]], [[Standard ML]], and [[Haskell]]. The type system is based on [[Hindley-Milner]] with a variety of extensions, such as [[Uniquenessuniqueness type|uniqueness types]]s and [[Dependent type|size-dependent types]]. Futhark is not intended as a [[general-purpose programming language]] for writing full applications, but is instead focused on writing computational "kernels" (not necessarily the same as a [[Compute kernel|GPU kernel]]) which are then invoked from applications written in conventional languages.<ref>{{cite web|url=https://futhark.readthedocs.io/en/latest/|title=Futhark User's Guide|website=futhark.readthedocs.io}}</ref>
 
== Examples ==
Line 53 ⟶ 54:
</syntaxhighlight>
 
Note how the types enforce that the function is only invoked with matrices of compatible size. Further, this is an example of nested [[data parallelism]].
 
== References ==
<!-- Inline citations added to your article will automatically display here. See en.wikipedia.org/wiki/WP:REFB for instructions on how to add citations. -->
{{reflistReflist}}
 
{{Parallel computing}}
Line 68 ⟶ 69:
[[Category:Statically typed programming languages]]
[[Category:Dependently typed languages]]
[[Category:ML programming language family]]
[[Category:Free compilers and interpreters]]
[[Category:2014 software]]
[[Category:Programming languages created in 2014]]