@effekt-lang/effekt 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/effekt CHANGED
Binary file
@@ -709,7 +709,7 @@ namespace internal {
709
709
  ///
710
710
  /// O(???)
711
711
  def union[K, V](m1: Tree[K, V], m2: Tree[K, V], compare: (K, K) => Ordering at {}) { combine : (K, V, V) => V }: Tree[K, V] = {
712
- /// Internal function similar to `putWithKey`, but right-biased. Only used here, recursively.
712
+ // Internal function similar to `putWithKey`, but right-biased. Only used here, recursively.
713
713
  def putWithKeyR(m: Tree[K, V], k: K, v: V): Tree[K, V] = {
714
714
  m match {
715
715
  case Tip() => singleton(k, v)
@@ -30,6 +30,18 @@ effect stop(): Nothing
30
30
  def for[A] { stream: () => Unit / emit[A] } { action: A => Unit }: Unit =
31
31
  returning::for[A, Unit]{stream}{action}
32
32
 
33
+ /// Applies the given function on each emitted element and reemits the result.
34
+ ///
35
+ /// e.g. map[Int,String]{ x => x.show } { range(0, 5) }
36
+ def map[A, B] { function: A => B } { stream: () => Unit / emit[A] }: Unit / emit[B] =
37
+ returning::map[A, B, Unit]{function}{stream}
38
+
39
+ /// Runs the given action whenever the given reader reads an element.
40
+ ///
41
+ /// e.g. var i = -1; with tap { i = i + 1; i }; reader()
42
+ def tap[A] { action: () => A / stop } { reader: () => Unit / read[A] }: Unit =
43
+ returning::tap[A, Unit]{action}{reader}
44
+
33
45
  /// Runs the stream as a message queue,
34
46
  /// handling each of its elements that can produce new elements ("messages"),
35
47
  /// until a fixed point is reached.
@@ -162,8 +174,8 @@ def index[A] { stream: () => Unit / emit[A] }: Unit / emit[Indexed[A]] =
162
174
 
163
175
 
164
176
  /// If `number` is zero or negative it does nothing
165
- def limit[A](number: Int) { stream: () => Unit / emit[A] }: Unit / {emit[A], stop} =
166
- returning::limit[A, Unit](number){stream}
177
+ def limit[A](number: Int) { stream: () => Unit / emit[A] }: Unit / emit[A] =
178
+ boundary { returning::limit[A, Unit](number){stream} }
167
179
 
168
180
 
169
181
  /// If `number` is zero or negative it does nothing
@@ -405,6 +417,12 @@ def encodeUTF8[R] { stream: () => R / emit[Char] }: R / emit[Byte] =
405
417
  resume(encodeChar(char))
406
418
  }
407
419
 
420
+ def writeFileUTF8[R](path: String) { stream: () => R / emit[Char] }: R / Exception[IOError] =
421
+ writeFile(path) { encodeUTF8 { stream() } }
422
+
423
+ def readFileUTF8[R](path: String) { reader: () => R / read[Char] }: R / Exception[IOError] =
424
+ readFile(path) { decodeUTF8 { reader() } }
425
+
408
426
  def feed[R](string: String) { reader: () => R / read[Char] } =
409
427
  feed(string.fromString) {
410
428
  decodeUTF8 {
@@ -422,6 +440,12 @@ def each(string: String): Unit / emit[Char] =
422
440
  def collectString { stream: () => Unit / emit[Char] }: String =
423
441
  returning::collectString[Unit]{stream}.second
424
442
 
443
+ def writeLine { body: () => Unit / emit[Char] }: Unit / emit[Char] =
444
+ returning::writeLine[Unit]{body}
445
+
446
+ def readLine { body: () => Unit / read[Char] }: Unit / {read[Char], stop} =
447
+ returning::readLine[Unit]{body}
448
+
425
449
  namespace internal {
426
450
  effect snapshot(): Unit
427
451
  }
@@ -515,6 +539,20 @@ def for[A, R] { stream: () => R / emit[A] } { action: A => Unit }: R =
515
539
  resume(action(value))
516
540
  }
517
541
 
542
+ def map[A, B, R] { function: A => B } { stream: () => R / emit[A] }: R / emit[B] =
543
+ try {
544
+ stream()
545
+ } with emit[A] { value =>
546
+ resume(do emit(function(value)))
547
+ }
548
+
549
+ def tap[A, R] { action: () => A / stop } { reader: () => R / read[A] }: R =
550
+ try {
551
+ reader()
552
+ } with read[A] { () =>
553
+ resume { action() }
554
+ }
555
+
518
556
  def boundary[R] { program: () => R / stop }: Option[R] =
519
557
  try {
520
558
  Some(program())
@@ -542,17 +580,21 @@ def index[A, R] { stream: () => R / emit[A] }: R / emit[Indexed[A]] = {
542
580
 
543
581
  /// If `number` is zero or negative it does nothing
544
582
  def limit[A, R](number: Int) { stream: () => R / emit[A] }: R / { emit[A], stop } = {
545
- if (number <= 0) do stop();
546
- var i = 1;
547
- try {
548
- stream()
549
- } with emit[A] { v =>
550
- if (i < number) {
551
- i = i + 1;
552
- resume(do emit(v))
553
- } else {
554
- do stop()
583
+ if (number > 0) {
584
+ var i = number;
585
+ try {
586
+ stream()
587
+ } with emit[A] { v =>
588
+ do emit(v);
589
+ i = i - 1;
590
+ if (i > 0) {
591
+ resume(())
592
+ } else {
593
+ do stop()
594
+ }
555
595
  }
596
+ } else {
597
+ do stop()
556
598
  }
557
599
  }
558
600
 
@@ -615,6 +657,28 @@ def collectString[R] { stream: () => R / emit[Char] }: (R, String) = {
615
657
  (result, bytes.toString)
616
658
  }
617
659
 
660
+ def writeLine[R] { body: () => R / emit[Char] }: R / emit[Char] = {
661
+ val result = body()
662
+ do emit('\n')
663
+ return result
664
+ }
665
+
666
+ def readLine[R] { body: () => R / read[Char] }: R / {read[Char], stop} = {
667
+ var stopped = false
668
+ try {
669
+ body()
670
+ } with read[Char] {
671
+ if(stopped){
672
+ resume { do stop() }
673
+ } else {
674
+ do read[Char] match {
675
+ case '\n' => stopped = true; resume { do stop() }
676
+ case char => resume { return char }
677
+ }
678
+ }
679
+ }
680
+ }
681
+
618
682
  def source[A, R] { stream: () => Unit / emit[A] } { reader: () => R / read[A] }: R = {
619
683
  var next = box { None() }
620
684
  next = box {
@@ -1,5 +1,5 @@
1
1
  <!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title>
2
- <meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.144.2"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1748801737"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
2
+ <meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.144.2"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1750011359"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
3
3
  <i class="fa fa-search fa-lg" aria-role=none></i></button><div class="toolbar-search-bar-wrapper dropdown-menu dropdown-menu-right" aria-labelledby=toolbar-search><form action=https://www.eclipse.org/home/search method=get><div class=search-bar><input class=search-bar-input name=q placeholder=Search>
4
4
  <button>
5
5
  <i class="fa fa-search" type=submit></i></button></div></form></div></div><div class="toolbar-btn toolbar-user-menu-btn dropdown"><button class=dropdown-toggle id=toolbar-user-menu type=button data-toggle=dropdown tabindex=0 aria-label="User Menu">
@@ -20,12 +20,12 @@ Download
20
20
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=projects-projects-sub-menu><li><a class=mobile-menu-item href=https://projects.eclipse.org/>Project Finder</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/projects/project_activity.php>Project Activity</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/projects/resources/>Project Resources</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/specifications/>Specifications</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/contribute/>Contribute</a></li></ul></div></li></ul></div></li><li class=mobile-menu-dropdown><a class="mobile-menu-item mobile-menu-dropdown-toggle" data-target=supporters-menu><span>Supporters</span>
21
21
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu hidden" id=supporters-menu><li class=mobile-menu-dropdown><a data-target=supporters-membership-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Membership</span>
22
22
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=supporters-membership-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/membership/explore-membership/>Our Members</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/membership/>Member Benefits</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/membership/#tab-levels>Membership Levels & Fees</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/membership/#tab-membership>Membership Application</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/membership/#tab-resources>Member Resources</a></li><li><a class=mobile-menu-item href=https://membership.eclipse.org/portal>Member Portal</a></li></ul></div></li><li class=mobile-menu-dropdown><a data-target=supporters-sponsorship-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Sponsorship</span>
23
- <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=supporters-sponsorship-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/sponsor/>Sponsor</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/sponsor/collaboration/>Sponsor a Collaboration</a></li></ul></div></li></ul></div></li><li class=mobile-menu-dropdown><a class="mobile-menu-item mobile-menu-dropdown-toggle" data-target=collaborations-menu><span>Collaborations</span>
23
+ <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=supporters-sponsorship-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/sponsor/>Become a Sponsor</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/org/our-sponsors/>Sponsor Directory</a></li></ul></div></li></ul></div></li><li class=mobile-menu-dropdown><a class="mobile-menu-item mobile-menu-dropdown-toggle" data-target=collaborations-menu><span>Collaborations</span>
24
24
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu hidden" id=collaborations-menu><li class=mobile-menu-dropdown><a data-target=collaborations-industry-collaborations-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Industry Collaborations</span>
25
25
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=collaborations-industry-collaborations-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/collaborations/>About Industry Collaborations</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/org/workinggroups/explore.php>Current Collaborations</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/org/workinggroups/about.php>About Working Groups</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/collaborations/interest-groups/>About Interest Groups</a></li></ul></div></li><li class=mobile-menu-dropdown><a data-target=collaborations-research-collaborations-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Research Collaborations</span>
26
26
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=collaborations-research-collaborations-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/research/>Research @ Eclipse</a></li></ul></div></li></ul></div></li><li class=mobile-menu-dropdown><a class="mobile-menu-item mobile-menu-dropdown-toggle" data-target=resources-menu><span>Resources</span>
27
27
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu hidden" id=resources-menu><li class=mobile-menu-dropdown><a data-target=resources-open-source-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Open Source for Business</span>
28
- <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=resources-open-source-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/org/value/>Business Value of Open Source</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/os4biz/ospo/>Open Source Program Offices</a></li></ul></div></li><li class=mobile-menu-dropdown><a data-target=resources-happening-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>What's Happening</span>
28
+ <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=resources-open-source-sub-menu><li><a class=mobile-menu-item href=https://www.eclipse.org/org/value/>Business Value of Open Source</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/os4biz/services/>Professional Services</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/os4biz/ospo/>Open Source Program Offices</a></li></ul></div></li><li class=mobile-menu-dropdown><a data-target=resources-happening-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>What's Happening</span>
29
29
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=resources-happening-sub-menu><li><a class=mobile-menu-item href=https://newsroom.eclipse.org/>News</a></li><li><a class=mobile-menu-item href=https://events.eclipse.org/>Events</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/community/eclipse_newsletter/>Newsletter</a></li><li><a class=mobile-menu-item href=https://newsroom.eclipse.org/news/press-releases>Press Releases</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/org/foundation/eclipseawards/>Awards & Recognition</a></li></ul></div></li><li class=mobile-menu-dropdown><a data-target=resources-developer-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>Developer Resources</span>
30
30
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu mobile-menu-links-menu hidden" id=resources-developer-sub-menu><li><a class=mobile-menu-item href=https://eclipse.org/forums/>Forum</a></li><li><a class=mobile-menu-item href=https://accounts.eclipse.org/mailing-list>Mailing Lists</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/blogs-and-videos/>Blogs & Videos</a></li><li><a class=mobile-menu-item href=https://www.eclipse.org/resources/marketplaces/>Marketplaces</a></li></ul></div></li></ul></div></li><li class=mobile-menu-dropdown><a class="mobile-menu-item mobile-menu-dropdown-toggle" data-target=the-foundation-menu><span>The Foundation</span>
31
31
  <i class="fa fa-chevron-down" aria-hidden=true></i></a><div class=mobile-menu-sub-menu-wrapper><ul class="mobile-menu-sub-menu hidden" id=the-foundation-menu><li class=mobile-menu-dropdown><a data-target=the-foundation-about-sub-menu class="mobile-menu-item mobile-menu-dropdown-toggle" aria-expanded=false><span>About</span>
@@ -36,12 +36,12 @@ hundreds of open source projects, including runtimes, tools,
36
36
  specifications, and frameworks for cloud and edge applications, IoT, AI,
37
37
  automotive, systems engineering, open processor designs, and many others.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Technologies</p><ul><li><a href=https://www.eclipse.org/topics/ide/>Developer Tools & IDEs</a></li><li><a href=https://www.eclipse.org/topics/cloud-native/>Cloud Native</a></li><li><a href=https://www.eclipse.org/topics/edge-and-iot/>Edge & IoT</a></li><li><a href=https://www.eclipse.org/topics/automotive-and-mobility/>Automotive & Mobility</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Projects</p><ul><li><a href=https://projects.eclipse.org/>Project Finder</a></li><li><a href=https://www.eclipse.org/projects/project_activity.php>Project Activity</a></li><li><a href=https://www.eclipse.org/projects/resources/>Project Resources</a></li><li><a href=https://www.eclipse.org/specifications/>Specifications</a></li><li><a href=https://www.eclipse.org/contribute/>Contribute</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=supporters-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>Supporters</p><p class=mega-menu-submenu-featured-story-text>The Eclipse Foundation is an international non-profit association
38
38
  supported by our members, including industry leaders who value open
39
- source as a key enabler for their business strategies.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Membership</p><ul><li><a href=https://www.eclipse.org/membership/explore-membership/>Our Members</a></li><li><a href=https://www.eclipse.org/membership/>Member Benefits</a></li><li><a href=https://www.eclipse.org/membership/#tab-levels>Membership Levels & Fees</a></li><li><a href=https://www.eclipse.org/membership/#tab-membership>Membership Application</a></li><li><a href=https://www.eclipse.org/membership/#tab-resources>Member Resources</a></li><li><a href=https://membership.eclipse.org/portal>Member Portal</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Sponsorship</p><ul><li><a href=https://www.eclipse.org/sponsor/>Sponsor</a></li><li><a href=https://www.eclipse.org/sponsor/collaboration/>Sponsor a Collaboration</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=collaborations-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>Collaborations</p><p class=mega-menu-submenu-featured-story-text>Whether you intend on contributing to Eclipse technologies that are
39
+ source as a key enabler for their business strategies.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Membership</p><ul><li><a href=https://www.eclipse.org/membership/explore-membership/>Our Members</a></li><li><a href=https://www.eclipse.org/membership/>Member Benefits</a></li><li><a href=https://www.eclipse.org/membership/#tab-levels>Membership Levels & Fees</a></li><li><a href=https://www.eclipse.org/membership/#tab-membership>Membership Application</a></li><li><a href=https://www.eclipse.org/membership/#tab-resources>Member Resources</a></li><li><a href=https://membership.eclipse.org/portal>Member Portal</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Sponsorship</p><ul><li><a href=https://www.eclipse.org/sponsor/>Become a Sponsor</a></li><li><a href=https://www.eclipse.org/org/our-sponsors/>Sponsor Directory</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=collaborations-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>Collaborations</p><p class=mega-menu-submenu-featured-story-text>Whether you intend on contributing to Eclipse technologies that are
40
40
  important to your product strategy, or simply want to explore a specific
41
41
  innovation area with like-minded organisations, the Eclipse Foundation is
42
42
  the open source home for industry collaboration.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Industry Collaborations</p><ul><li><a href=https://www.eclipse.org/collaborations/>About Industry Collaborations</a></li><li><a href=https://www.eclipse.org/org/workinggroups/explore.php>Current Collaborations</a></li><li><a href=https://www.eclipse.org/org/workinggroups/about.php>About Working Groups</a></li><li><a href=https://www.eclipse.org/collaborations/interest-groups/>About Interest Groups</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Research Collaborations</p><ul><li><a href=https://www.eclipse.org/research/>Research @ Eclipse</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=resources-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>Resources</p><p class=mega-menu-submenu-featured-story-text>The Eclipse community consists of individual developers and organisations
43
43
  spanning many industries. Stay up to date on our open source community
44
- and find resources to support your journey.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Open Source for Business</p><ul><li><a href=https://www.eclipse.org/org/value/>Business Value of Open Source</a></li><li><a href=https://www.eclipse.org/os4biz/ospo/>Open Source Program Offices</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>What's Happening</p><ul><li><a href=https://newsroom.eclipse.org/>News</a></li><li><a href=https://events.eclipse.org/>Events</a></li><li><a href=https://www.eclipse.org/community/eclipse_newsletter/>Newsletter</a></li><li><a href=https://newsroom.eclipse.org/news/press-releases>Press Releases</a></li><li><a href=https://www.eclipse.org/org/foundation/eclipseawards/>Awards & Recognition</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Developer Resources</p><ul><li><a href=https://eclipse.org/forums/>Forum</a></li><li><a href=https://accounts.eclipse.org/mailing-list>Mailing Lists</a></li><li><a href=https://www.eclipse.org/blogs-and-videos/>Blogs & Videos</a></li><li><a href=https://www.eclipse.org/resources/marketplaces/>Marketplaces</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=the-foundation-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>The Foundation</p><p class=mega-menu-submenu-featured-story-text>The Eclipse Foundation provides our global community of individuals and
44
+ and find resources to support your journey.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>Open Source for Business</p><ul><li><a href=https://www.eclipse.org/org/value/>Business Value of Open Source</a></li><li><a href=https://www.eclipse.org/os4biz/services/>Professional Services</a></li><li><a href=https://www.eclipse.org/os4biz/ospo/>Open Source Program Offices</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>What's Happening</p><ul><li><a href=https://newsroom.eclipse.org/>News</a></li><li><a href=https://events.eclipse.org/>Events</a></li><li><a href=https://www.eclipse.org/community/eclipse_newsletter/>Newsletter</a></li><li><a href=https://newsroom.eclipse.org/news/press-releases>Press Releases</a></li><li><a href=https://www.eclipse.org/org/foundation/eclipseawards/>Awards & Recognition</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Developer Resources</p><ul><li><a href=https://eclipse.org/forums/>Forum</a></li><li><a href=https://accounts.eclipse.org/mailing-list>Mailing Lists</a></li><li><a href=https://www.eclipse.org/blogs-and-videos/>Blogs & Videos</a></li><li><a href=https://www.eclipse.org/resources/marketplaces/>Marketplaces</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div><div class="mega-menu-submenu container hidden" data-menu-id=the-foundation-menu><div class=mega-menu-submenu-featured-story><p class=mega-menu-submenu-featured-story-heading>The Foundation</p><p class=mega-menu-submenu-featured-story-text>The Eclipse Foundation provides our global community of individuals and
45
45
  organisations with a mature, scalable, and vendor-neutral environment for
46
46
  open source software collaboration and innovation.</p></div><div class=mega-menu-submenu-links-section><div class=mega-menu-submenu-links><p class=menu-heading>About</p><ul><li><a href=https://www.eclipse.org/org/>About the Eclipse Foundation</a></li><li><a href=https://www.eclipse.org/org/governance/>Board & Governance</a></li><li><a href=https://www.eclipse.org/org/foundation/staff.php>Staff</a></li><li><a href=https://www.eclipse.org/org/services/>Services</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>Legal</p><ul><li><a href=https://www.eclipse.org/legal/>Legal Policies</a></li><li><a href=https://www.eclipse.org/legal/privacy/>Privacy Policy</a></li><li><a href=https://www.eclipse.org/legal/terms-of-use/>Terms of Use</a></li><li><a href=https://www.eclipse.org/legal/compliance/>Compliance</a></li><li><a href=https://www.eclipse.org/legal/epl-2.0/>Eclipse Public License</a></li></ul></div><div class=mega-menu-submenu-links><p class=menu-heading>More</p><ul><li><a href=https://newsroom.eclipse.org/news/press-releases>Press Releases</a></li><li><a href=https://www.eclipse.org/careers/>Careers</a></li><li><a href=https://www.eclipse.org/org/artwork/>Logos & Artwork</a></li><li><a href=https://www.eclipse.org/org/foundation/contact.php>Contact Us</a></li></ul></div></div><div class=mega-menu-submenu-ad-wrapper><div class="eclipsefdn-mega-menu-promo-content mega-menu-promo-content" data-ad-format=ads_square data-ad-publish-to=eclipse_org_home></div></div></div></div></header><main><div class="container padding-bottom-30"><div class=row><div class=col-md-18><div class="default-breadcrumbs hidden-print" id=breadcrumb><div><div class=row><div class=col-sm-24><ol aria-label=Breadcrumb class=breadcrumb><li><a href=https://www.eclipse.org/>Home</a></li><li><a href=https://www.eclipse.org/legal/>Eclipse Foundation Legal Resources</a></li><li class=active aria-current=page><a href=https://www.eclipse.org/legal/epl-2.0/>Eclipse Public License 2.0 (EPL)</a></li></ol></div></div></div></div><div id=content></div><script async src=/public/js/generate-body-content.js type=text/javascript></script></div><div class="col-md-6 padding-bottom-30"><aside class=main-sidebar-default-margin id=main-sidebar><ul class=ul-left-nav id=leftnav role=tablist aria-multiselectable=true><li class="main-sidebar-main-item main-sidebar-item-indented separator"><a class="main-sidebar-heading link-unstyled" href=/legal>Legal</a></li><li class="main-sidebar-item main-sidebar-item-indented"><li class="main-sidebar-item main-sidebar-item-indented"><a class=link-unstyled role=button data-toggle=collapse href=#legal-eca aria-expanded=false aria-controls=legal-eca><span>ECA</span>
47
47
  <i class="main-sidebar-item-icon fa fa-chevron-down" aria-hidden=true></i></a><div class=collapse id=legal-eca><ul class="main-sidebar-item-submenu list-unstyled"><li class=submenu-item><a class=link-unstyled href=/legal/eca target=_self>About</a></li><li class=submenu-item><a class=link-unstyled href=https://accounts.eclipse.org/user/eca target=_self>Sign</a></li><li class=submenu-item><a class=link-unstyled href=https://accounts.eclipse.org/user/eca target=_self>Validation Tool</a></li></ul></div></li></li><li class="main-sidebar-item main-sidebar-item-indented"><li class="main-sidebar-item main-sidebar-item-indented"><a class=link-unstyled role=button data-toggle=collapse href=#legal-epl-20 aria-expanded=false aria-controls=legal-epl-20><span>EPL-2.0</span>
@@ -60,4 +60,4 @@ open source software collaboration and innovation.</p></div><div class=mega-menu
60
60
  <i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i>
61
61
  <span class=sr-only>Linkedin account</span></span></a></li></ul></div></div><div class="footer-sections row equal-height-md font-bold"><div class=col-md-15><div class=row><section id=footer-eclipse-foundation class="footer-section col-sm-8"><div class=menu-heading>Eclipse Foundation</div><ul class=nav><li><a href=https://www.eclipse.org/org/>About</a></li><li><a href=https://projects.eclipse.org/>Projects</a></li><li><a href=https://www.eclipse.org/collaborations/>Collaborations</a></li><li><a href=https://www.eclipse.org/membership/>Membership</a></li><li><a href=https://www.eclipse.org/sponsor/>Sponsor</a></li></ul></section><section id=footer-legal class="footer-section col-sm-8"><div class=menu-heading>Legal</div><ul class=nav><li><a href=https://www.eclipse.org/legal/privacy/>Privacy Policy</a></li><li><a href=https://www.eclipse.org/legal/terms-of-use/>Terms of Use</a></li><li><a href=https://www.eclipse.org/legal/compliance/>Compliance</a></li><li><a href=https://www.eclipse.org/org/documents/Community_Code_of_Conduct.php>Code of Conduct</a></li><li><a href=https://www.eclipse.org/legal/>Legal Resources</a></li><li><a class=toolbar-manage-cookies href=# onclick=event.preventDefault()>Manage Cookies</a></li></ul></section><section id=footer-more class="footer-section col-sm-8"><div class=menu-heading>More</div><ul class=nav><li><a href=https://www.eclipse.org/security/>Report a Vulnerability</a></li><li><a href=https://status.eclipse.org/>Service Status</a></li><li><a href=https://www.eclipse.org/org/foundation/contact.php>Contact Us</a></li><li><a href=https://www.eclipse.org/projects/support/>Support</a></li></ul></section></div></div><div id=footer-end class="footer-section col-md-8 col-md-offset-1 col-sm-24"><div class=footer-end-newsletter><form id=mc-embedded-subscribe-form action="https://eclipse.us6.list-manage.com/subscribe/post?u=eaf9e1f06f194eadc66788a85&amp;id=e7538485cd&amp;f_id=00f9c2e1f0" method=post novalidate target=_blank><label class=footer-end-newsletter-label for=email>Subscribe to our Newsletter</label><div class=footer-end-newsletter-input-wrapper><input class=footer-end-newsletter-input type=email id=email name=EMAIL autocomplete=email placeholder="Enter your email address">
62
62
  <button class="footer-end-newsletter-submit btn btn-link" id=mc-embedded-subscribe type=submit name=subscribe>
63
- <i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1748801737"></script><script>(function(){})(jQuery,document)</script></div></body></html>
63
+ <i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright &copy; Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1750011359"></script><script>(function(){})(jQuery,document)</script></div></body></html>