@effekt-lang/effekt 0.37.0 → 0.39.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
@@ -782,71 +782,3 @@ effect literal(s: String): Unit
782
782
  effect splice[A](x: A): Unit
783
783
 
784
784
 
785
- namespace internal {
786
- namespace boxing {
787
- // For boxing polymorphic values
788
- extern type BoxedUnit
789
- extern pure def boxUnit(u: Unit): Unit =
790
- extern pure def unboxUnit(u: Unit): Unit =
791
-
792
- extern type BoxedInt
793
- extern pure def boxInt(n: Int): BoxedInt =
794
- llvm """
795
- %boxed1 = insertvalue %Pos zeroinitializer, i64 ${n}, 0
796
- %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
797
- ret %Pos %boxed2
798
- """
799
- extern pure def unboxInt(b: BoxedInt): Int =
800
- llvm """
801
- %unboxed = extractvalue %Pos ${b}, 0
802
- ret %Int %unboxed
803
- """
804
-
805
- extern type BoxedByte
806
- extern pure def boxByte(n: Byte): BoxedByte =
807
- llvm """
808
- %extended = sext i8 ${n} to i64
809
- %boxed1 = insertvalue %Pos zeroinitializer, i64 %extended, 0
810
- %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
811
- ret %Pos %boxed2
812
- """
813
- extern pure def unboxByte(b: BoxedByte): Byte =
814
- llvm """
815
- %unboxed = extractvalue %Pos ${b}, 0
816
- %truncated = trunc i64 %unboxed to i8
817
- ret i8 %truncated
818
- """
819
-
820
- extern type BoxedChar
821
- extern pure def boxChar(c: Char): BoxedChar =
822
- llvm """
823
- %boxed1 = insertvalue %Pos zeroinitializer, i64 ${c}, 0
824
- %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
825
- ret %Pos %boxed2
826
- """
827
- extern pure def unboxChar(b: BoxedChar): Char =
828
- llvm """
829
- %unboxed = extractvalue %Pos ${b}, 0
830
- ret %Int %unboxed
831
- """
832
-
833
- extern type BoxedBool
834
- extern pure def boxBool(b: Bool): BoxedBool =
835
- extern pure def unboxBool(b: BoxedBool): Bool =
836
-
837
- extern type BoxedDouble
838
- extern pure def boxDouble(d: Double): BoxedDouble =
839
- llvm """
840
- %n = bitcast double ${d} to i64
841
- %boxed1 = insertvalue %Pos zeroinitializer, i64 %n, 0
842
- %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
843
- ret %Pos %boxed2
844
- """
845
- extern pure def unboxDouble(b: BoxedDouble): Double =
846
- llvm """
847
- %unboxed = extractvalue %Pos ${b}, 0
848
- %d = bitcast i64 %unboxed to double
849
- ret %Double %d
850
- """
851
- }
852
- }
@@ -16,7 +16,7 @@ extern async def spawn(task: Task[Unit]): Unit =
16
16
  js "$effekt.capture(k => { setTimeout(() => k($effekt.unit), 0); return $effekt.run(${task}) })"
17
17
  llvm """
18
18
  call void @c_yield(%Stack %stack)
19
- %unboxed = call ccc %Neg @unbox(%Pos ${task})
19
+ %unboxed = call ccc %Neg @coercePosNeg(%Pos ${task})
20
20
  call void @run(%Neg %unboxed)
21
21
  ret void
22
22
  """
@@ -120,26 +120,6 @@ declare void @exit(i64)
120
120
  declare void @llvm.assume(i1)
121
121
 
122
122
 
123
- ; Boxing (externs functions, hence ccc)
124
- define ccc %Pos @box(%Neg %input) {
125
- %vtable = extractvalue %Neg %input, 0
126
- %heap_obj = extractvalue %Neg %input, 1
127
- %vtable_as_int = ptrtoint ptr %vtable to i64
128
- %pos_result = insertvalue %Pos undef, i64 %vtable_as_int, 0
129
- %pos_result_with_heap = insertvalue %Pos %pos_result, ptr %heap_obj, 1
130
- ret %Pos %pos_result_with_heap
131
- }
132
-
133
- define ccc %Neg @unbox(%Pos %input) {
134
- %tag = extractvalue %Pos %input, 0
135
- %heap_obj = extractvalue %Pos %input, 1
136
- %vtable = inttoptr i64 %tag to ptr
137
- %neg_result = insertvalue %Neg undef, ptr %vtable, 0
138
- %neg_result_with_heap = insertvalue %Neg %neg_result, ptr %heap_obj, 1
139
- ret %Neg %neg_result_with_heap
140
- }
141
-
142
-
143
123
  ; Prompts
144
124
 
145
125
  define private %Prompt @currentPrompt(%Stack %stack) {
@@ -774,6 +754,62 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
774
754
  }
775
755
 
776
756
 
757
+ define ccc %Pos @coerceNegPos(%Neg %neg) {
758
+ %arrayPointer = extractvalue %Neg %neg, 0
759
+ %object = extractvalue %Neg %neg, 1
760
+ %tagValue = ptrtoint ptr %arrayPointer to i64
761
+ %boxed1 = insertvalue %Pos undef, i64 %tagValue, 0
762
+ %boxed2 = insertvalue %Pos %boxed1, ptr %object, 1
763
+ ret %Pos %boxed2
764
+ }
765
+
766
+ define ccc %Neg @coercePosNeg(%Pos %pos) {
767
+ %tagValue = extractvalue %Pos %pos, 0
768
+ %object = extractvalue %Pos %pos, 1
769
+ %arrayPointer = inttoptr i64 %tagValue to ptr
770
+ %unboxed1 = insertvalue %Neg undef, ptr %arrayPointer, 0
771
+ %unboxed2 = insertvalue %Neg %unboxed1, ptr %object, 1
772
+ ret %Neg %unboxed2
773
+ }
774
+
775
+ define ccc %Pos @coerceIntPos(%Int %input) {
776
+ %boxed1 = insertvalue %Pos zeroinitializer, i64 %input, 0
777
+ %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
778
+ ret %Pos %boxed2
779
+ }
780
+
781
+ define ccc %Int @coercePosInt(%Pos %input) {
782
+ %unboxed = extractvalue %Pos %input, 0
783
+ ret %Int %unboxed
784
+ }
785
+
786
+ define ccc %Pos @coerceBytePos(%Byte %input) {
787
+ %extended = sext i8 %input to i64
788
+ %boxed1 = insertvalue %Pos zeroinitializer, i64 %extended, 0
789
+ %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
790
+ ret %Pos %boxed2
791
+ }
792
+
793
+ define ccc %Byte @coercePosByte(%Pos %input) {
794
+ %unboxed = extractvalue %Pos %input, 0
795
+ %truncated = trunc i64 %unboxed to i8
796
+ ret i8 %truncated
797
+ }
798
+
799
+ define ccc %Pos @coerceDoublePos(%Double %input) {
800
+ %number = bitcast double %input to i64
801
+ %boxed1 = insertvalue %Pos zeroinitializer, i64 %number, 0
802
+ %boxed2 = insertvalue %Pos %boxed1, %Object null, 1
803
+ ret %Pos %boxed2
804
+ }
805
+
806
+ define ccc %Double @coercePosDouble(%Pos %input) {
807
+ %unboxed = extractvalue %Pos %input, 0
808
+ %d = bitcast i64 %unboxed to double
809
+ ret %Double %d
810
+ }
811
+
812
+
777
813
  ; Scope domains
778
814
  !0 = !{!"types"}
779
815
 
@@ -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=1751825727"><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=1753035361"><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">
@@ -50,14 +50,18 @@ open source software collaboration and innovation.</p></div><div class=mega-menu
50
50
  <i class="main-sidebar-item-icon fa fa-chevron-down" aria-hidden=true></i></a><div class=collapse id=legal-licenses><ul class="main-sidebar-item-submenu list-unstyled"><li class=submenu-item><a class=link-unstyled href=/legal/licenses#approved target=_self>Approved 3rd Party</a></li><li class=submenu-item><a class=link-unstyled href=/legal/licenses#nonapproved target=_self>Non Approved</a></li><li class=submenu-item><a class=link-unstyled href=/projects/handbook/#ip-copyright-headers target=_self>File Headers</a></li><li class=submenu-item><a class=link-unstyled href=/legal/non-code-licenses target=_self>Docs & Examples</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-specs aria-expanded=false aria-controls=legal-specs><span>Specifications</span>
51
51
  <i class="main-sidebar-item-icon fa fa-chevron-down" aria-hidden=true></i></a><div class=collapse id=legal-specs><ul class="main-sidebar-item-submenu list-unstyled"><li class=submenu-item><a class=link-unstyled href=/projects/efsp/ target=_self>Specifications Process</a></li><li class=submenu-item><a class=link-unstyled href=/projects/efsp/operations.php target=_self>Specifications Operations</a></li><li class=submenu-item><a class=link-unstyled href=/legal/efsl target=_self>Specification License</a></li><li class=submenu-item><a class=link-unstyled href=/legal/tck target=_self>TCK License</a></li></ul></div></li></li></ul></aside></div></div></div></main><div class="eclipsefdn-featured-footer featured-footer" id=featured-footer data-publish-target=eclipse_org><div class=container><div class=row><div class="col-sm-24 featured-container"></div></div></div></div><p id=back-to-top><a class=visible-xs href=#>Back to the top</a></p><footer class=footer id=footer><div class=container><div class="footer-end-social-container margin-bottom-30"><div class=footer-end-social><p class="footer-end-social-text hidden-xs">Follow Us:</p><ul class="footer-end-social-links list-inline"><li><a class=link-unstyled href=https://x.com/EclipseFdn title="X account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
52
52
  <i class="fa-brands fa-x-twitter fa-stack-1x fa-inverse" aria-hidden=true></i>
53
- <span class=sr-only>X account</span></span></a></li><li><a class=link-unstyled href=https://bsky.app/profile/eclipsefdn.bsky.social title="Bluesky account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
53
+ <span class=sr-only>X account</span></span></a></li><li><a class=link-unstyled href=https://bsky.app/profile/eclipse.org title="Bluesky account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
54
54
  <i class="fa-brands fa-bluesky fa-stack-1x fa-inverse" aria-hidden=true></i>
55
- <span class=sr-only>Bluesky account</span></span></a></li><li><a class=link-unstyled href=https://www.facebook.com/eclipse.org title="Facebook account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
55
+ <span class=sr-only>Bluesky account</span></span></a></li><li><a class=link-unstyled href=https://mastodon.social/@EclipseFdn title="Mastodon account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
56
+ <i class="fa-brands fa-mastodon fa-stack-1x fa-inverse" aria-hidden=true></i>
57
+ <span class=sr-only>Mastodon account</span></span></a></li><li><a class=link-unstyled href=https://www.facebook.com/eclipse.org title="Facebook account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
56
58
  <i class="fa-brands fa-facebook-f fa-stack-1x fa-inverse" aria-hidden=true></i>
57
- <span class=sr-only>Facebook account</span></span></a></li><li><a class=link-unstyled href=https://www.youtube.com/user/EclipseFdn title="Youtube account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
59
+ <span class=sr-only>Facebook account</span></span></a></li><li><a class=link-unstyled href=https://www.instagram.com/eclipsefoundation/ title="Instagram account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
60
+ <i class="fa-brands fa-instagram fa-stack-1x fa-inverse" aria-hidden=true></i>
61
+ <span class=sr-only>Instagram account</span></span></a></li><li><a class=link-unstyled href=https://www.youtube.com/user/EclipseFdn title="YouTube account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
58
62
  <i class="fa-brands fa-youtube fa-stack-1x fa-inverse" aria-hidden=true></i>
59
- <span class=sr-only>Youtube account</span></span></a></li><li><a class=link-unstyled href=https://www.linkedin.com/company/eclipse-foundation title="Linkedin account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
63
+ <span class=sr-only>YouTube account</span></span></a></li><li><a class=link-unstyled href=https://www.linkedin.com/company/eclipse-foundation title="LinkedIn account"><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
60
64
  <i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i>
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">
65
+ <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
66
  <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=1751825727"></script><script>(function(){})(jQuery,document)</script></div></body></html>
67
+ <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=1753035361"></script><script>(function(){})(jQuery,document)</script></div></body></html>