@effekt-lang/effekt 0.62.0 → 0.63.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 +0 -0
- package/libraries/common/array.effekt +40 -40
- package/libraries/common/bytearray.effekt +39 -0
- package/libraries/common/bytestream.effekt +337 -0
- package/libraries/common/effekt.effekt +29 -2
- package/libraries/common/io/env.effekt +74 -0
- package/libraries/common/io/network.effekt +101 -12
- package/libraries/common/json.effekt +7 -7
- package/libraries/common/list.effekt +5 -0
- package/libraries/common/map.effekt +4 -0
- package/libraries/common/partial.effekt +7 -0
- package/libraries/common/resizable_array.effekt +99 -38
- package/libraries/common/scanner.effekt +27 -30
- package/libraries/common/set.effekt +4 -0
- package/libraries/common/stream.effekt +46 -2
- package/libraries/common/test.effekt +10 -0
- package/libraries/llvm/io.c +39 -0
- package/licenses/eclipse public license, version 2.0 - epl-2.0.html +2 -2
- package/licenses/mit license - mit-license.html +29 -22
- package/licenses/the bsd license - bsd-license.html +29 -21
- package/licenses/the mit license - mit.html +28 -21
- package/package.json +1 -1
|
@@ -2,21 +2,15 @@ module scanner
|
|
|
2
2
|
|
|
3
3
|
import stream
|
|
4
4
|
|
|
5
|
-
interface Scan[A] {
|
|
6
|
-
/// Return the next character, not advancing.
|
|
7
|
-
/// That is, this does not change what any future calls on the Scanner return.
|
|
8
|
-
def peek(): A / stop
|
|
9
|
-
/// Advance the Scanner to the next character.
|
|
10
|
-
def skip(): Unit / stop
|
|
11
|
-
}
|
|
12
5
|
|
|
6
|
+
/// Return the next character, not advancing.
|
|
7
|
+
/// That is, this does not change what any future calls on the Scanner return.
|
|
8
|
+
effect peek[A](): A / stop
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return t
|
|
19
|
-
}
|
|
10
|
+
effect Scan[A] = {read[A], peek[A]}
|
|
11
|
+
|
|
12
|
+
/// Advance the pull stream to the next element, discarding the current element.
|
|
13
|
+
def skip[A](): Unit / {read[A], stop} = { do read(); () }
|
|
20
14
|
|
|
21
15
|
|
|
22
16
|
/// Run a scanner by reading from an input stream, discarding its output.
|
|
@@ -29,7 +23,7 @@ def expect(message: String) { scanner: () => Unit / fail }: Unit / Exception[Wro
|
|
|
29
23
|
/// If conversion is successful read the next token, otherwise stop.
|
|
30
24
|
def readWhen[A, B] { convert: A => B / fail }: B / { Scan[A], stop } = {
|
|
31
25
|
val t = attempt { convert(do peek()) } { do stop() };
|
|
32
|
-
do
|
|
26
|
+
do read()
|
|
33
27
|
return t
|
|
34
28
|
}
|
|
35
29
|
|
|
@@ -37,7 +31,7 @@ def readWhen[A, B] { convert: A => B / fail }: B / { Scan[A], stop } = {
|
|
|
37
31
|
def readIf[A] { predicate: A => Bool }: A / { Scan[A], stop } = {
|
|
38
32
|
val t = do peek()
|
|
39
33
|
if (predicate(t)) {
|
|
40
|
-
do
|
|
34
|
+
do read()
|
|
41
35
|
return t
|
|
42
36
|
} else {
|
|
43
37
|
do stop()
|
|
@@ -51,7 +45,7 @@ def skipIf[A] { predicate: A => Bool }: Unit / { Scan[A], stop } = {
|
|
|
51
45
|
|
|
52
46
|
/// Skips the next token but fails instead of stopping.
|
|
53
47
|
def mustSkip[A](): Unit / { Scan[A], fail } =
|
|
54
|
-
must {
|
|
48
|
+
must { skip() }
|
|
55
49
|
|
|
56
50
|
/// Skips the next character but fails if it is not the given one.
|
|
57
51
|
def mustSkip(token: Char): Unit / { Scan[Char], fail } =
|
|
@@ -91,19 +85,21 @@ def skipIf(e: Char): Unit / { Scan[Char], stop } =
|
|
|
91
85
|
/// Immediately stops when already at the end.
|
|
92
86
|
def until[A, R] { predicate: A => Bool } { scanner: () => R / Scan[A] }: R / { Scan[A], stop } = {
|
|
93
87
|
var stopped = false
|
|
94
|
-
if (predicate(do peek())) { stopped = true;
|
|
88
|
+
if (predicate(do peek())) { stopped = true; skip() }
|
|
95
89
|
try {
|
|
96
90
|
scanner()
|
|
97
|
-
} with
|
|
98
|
-
|
|
91
|
+
} with peek[A] {
|
|
92
|
+
resume {
|
|
99
93
|
if (stopped) { do stop() } else { do peek() }
|
|
100
94
|
}
|
|
101
|
-
|
|
95
|
+
} with read[A] {
|
|
96
|
+
resume {
|
|
102
97
|
if (stopped) { do stop() } else {
|
|
103
|
-
do
|
|
98
|
+
val t = do read()
|
|
104
99
|
boundary {
|
|
105
|
-
if (predicate(do peek())) { stopped = true;
|
|
100
|
+
if (predicate(do peek())) { stopped = true; skip() }
|
|
106
101
|
}
|
|
102
|
+
return t
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
105
|
}
|
|
@@ -165,7 +161,7 @@ def readHexadecimal(): Int / { Scan[Char], fail } = {
|
|
|
165
161
|
/// Fails whenn there isn't at least one digit.
|
|
166
162
|
def readInteger(): Int / { Scan[Char], fail } =
|
|
167
163
|
must { do peek() } match {
|
|
168
|
-
case '-' => must {
|
|
164
|
+
case '-' => must { skip() }; neg(readDecimal())
|
|
169
165
|
case c and isDigit(c) => readDecimal()
|
|
170
166
|
case _ => do fail()
|
|
171
167
|
}
|
|
@@ -174,28 +170,29 @@ namespace returning {
|
|
|
174
170
|
|
|
175
171
|
/// Run a scanner by reading from an input stream.
|
|
176
172
|
def scanner[A, R] { scanner: () => R / Scan[A] }: R / read[A] = {
|
|
173
|
+
def upstream(): A / stop = do read()
|
|
177
174
|
var last = None()
|
|
178
175
|
try {
|
|
179
176
|
scanner()
|
|
180
|
-
} with
|
|
181
|
-
|
|
177
|
+
} with peek[A] { () =>
|
|
178
|
+
resume {
|
|
182
179
|
last match {
|
|
183
180
|
case None() =>
|
|
184
|
-
val t =
|
|
181
|
+
val t = upstream()
|
|
185
182
|
last = Some(t)
|
|
186
183
|
return t
|
|
187
184
|
case Some(t) =>
|
|
188
185
|
return t
|
|
189
186
|
}
|
|
190
187
|
}
|
|
191
|
-
|
|
188
|
+
} with read[A] {
|
|
189
|
+
resume {
|
|
192
190
|
last match {
|
|
193
191
|
case None() =>
|
|
194
|
-
|
|
195
|
-
return ()
|
|
192
|
+
upstream()
|
|
196
193
|
case Some(t) =>
|
|
197
194
|
last = None()
|
|
198
|
-
return
|
|
195
|
+
return t
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
}
|
|
@@ -243,10 +243,14 @@ def intersection[A](s1: Set[A], s2: Set[A]): Set[A] =
|
|
|
243
243
|
def each[A](set: Set[A]): Unit / emit[A] =
|
|
244
244
|
set.foreach { x => do emit(x) }
|
|
245
245
|
|
|
246
|
+
/// Collects elements emitted by a push stream producer `stream` into a new set
|
|
247
|
+
/// using provided `compare` function, discarding the result of the producer.
|
|
246
248
|
def collect[A](compare: (A, A) => Ordering at {}) { stream: () => Unit / emit[A] }: Set[A] =
|
|
247
249
|
returning::collect[A, Unit](compare){stream}.second
|
|
248
250
|
|
|
249
251
|
namespace returning {
|
|
252
|
+
/// Collects elements emitted by a push stream producer `stream` into a new set
|
|
253
|
+
/// using provided `compare` function, returning the result of the producer as well as the collected set.
|
|
250
254
|
def collect[A, R](compare: (A, A) => Ordering at {}) { stream: () => R / emit[A] }: (R, Set[A]) =
|
|
251
255
|
try {
|
|
252
256
|
(stream(), empty(compare))
|
|
@@ -314,8 +314,8 @@ def tee[A]{ cons1: { => Unit / emit[A] } => Unit }{ cons2: { => Unit / emit[A] }
|
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
-
///
|
|
318
|
-
/// or
|
|
317
|
+
/// Extract exactly the very first element of the given stream
|
|
318
|
+
/// or fails if no elements are emitted.
|
|
319
319
|
///
|
|
320
320
|
/// Examples:
|
|
321
321
|
/// ```effekt
|
|
@@ -333,6 +333,50 @@ def first[A] { stream: () => Unit / emit[A] }: A / fail = {
|
|
|
333
333
|
} with emit[A] { a => a }
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
/// Extract the nth element of the given stream.
|
|
337
|
+
/// Fails if not enough elements are emitted
|
|
338
|
+
def nth[A](n: Int){ stream: () => Unit / emit[A] }: A / fail = {
|
|
339
|
+
var m = n
|
|
340
|
+
try {
|
|
341
|
+
def body(): A = { stream(); do fail() }
|
|
342
|
+
body()
|
|
343
|
+
} with emit[A] { a =>
|
|
344
|
+
if (m == 0) {
|
|
345
|
+
return a
|
|
346
|
+
} else {
|
|
347
|
+
m = m - 1
|
|
348
|
+
resume(())
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
// Counting and padding
|
|
354
|
+
// --------------------
|
|
355
|
+
|
|
356
|
+
/// get current position in stream
|
|
357
|
+
effect getPos(): Int
|
|
358
|
+
|
|
359
|
+
/// Track position in stream, starting with init
|
|
360
|
+
/// Handles getPos
|
|
361
|
+
def tracking[A](init: Int){ body: => Unit / { emit[A], getPos } }: Unit / emit[A] = {
|
|
362
|
+
var n = init
|
|
363
|
+
try body()
|
|
364
|
+
with emit[A] { b => n = n + 1; resume(do emit[A](b)) }
|
|
365
|
+
with getPos{ resume(n) }
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/// Pad to a multiple of fac emitted values, by emitting gen repeatedly
|
|
369
|
+
def pad[A](fac: Int){ gen: => A }: Unit / {getPos, emit[A]} = {
|
|
370
|
+
while(mod(do getPos(), fac) != 0) {
|
|
371
|
+
do emit[A](gen())
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/// Track how many bytes were emitted (in the body)
|
|
376
|
+
/// Handles getPos
|
|
377
|
+
def tracking[A]{ body: => Unit / { emit[A], getPos } }: Unit / emit[A] =
|
|
378
|
+
tracking[A](0){body}
|
|
379
|
+
|
|
336
380
|
namespace returning {
|
|
337
381
|
|
|
338
382
|
/// Canonical handler of push streams that performs `action` for every
|
|
@@ -33,6 +33,9 @@ def assert(obtained: String, expected: String, msg: String): Unit / Assertion =
|
|
|
33
33
|
def assert(obtained: Int, expected: Int): Unit / { Assertion, Formatted } =
|
|
34
34
|
assertEqual(obtained, expected) { (x, y) => x == y } { x => show(x) }
|
|
35
35
|
|
|
36
|
+
def assert(obtained: Byte, expected: Byte): Unit / { Assertion, Formatted } =
|
|
37
|
+
assertEqual(obtained, expected) { (x, y) => x == y } { x => show(x) }
|
|
38
|
+
|
|
36
39
|
def assert(obtained: Bool, expected: Bool): Unit / { Assertion, Formatted } =
|
|
37
40
|
assertEqual(obtained, expected) { (x, y) => x == y } { x => show(x) }
|
|
38
41
|
|
|
@@ -68,6 +71,13 @@ def assertThrown[E](ex: on[E]) { body: => Unit / Exception[E] }: Unit / Assertio
|
|
|
68
71
|
def assertThrows[E] { body: => Unit / Exception[E] }: Unit / Assertion =
|
|
69
72
|
do assert(on[E].default { true } { body(); false }, "Expected Exception, but exited normally")
|
|
70
73
|
|
|
74
|
+
def assertFail { body: => Unit / fail }: Unit / Assertion =
|
|
75
|
+
do assert(succeeds {body}, "Expected 'fail', but exited normally")
|
|
76
|
+
|
|
77
|
+
def assertNoFail { body: => Unit / fail }: Unit / Assertion =
|
|
78
|
+
onFail { do assert(false, "Unexpected 'fail'") } {body}
|
|
79
|
+
|
|
80
|
+
|
|
71
81
|
interface Test {
|
|
72
82
|
def success(name: String, duration: Int): Unit
|
|
73
83
|
def failure(name: String, msg: String, duration: Int): Unit
|
package/libraries/llvm/io.c
CHANGED
|
@@ -826,4 +826,43 @@ void c_spawn(struct Pos cmd, struct Pos args, struct Pos options, Stack stack) {
|
|
|
826
826
|
}
|
|
827
827
|
}
|
|
828
828
|
|
|
829
|
+
// Returns the required buffer size if the variable exists, or -1 if it does not.
|
|
830
|
+
// This avoids allocating when the variable is not set.
|
|
831
|
+
Int c_getenv_size(struct Pos name) {
|
|
832
|
+
char* name_str = c_bytearray_into_nullterminated_string(name);
|
|
833
|
+
erasePositive(name);
|
|
834
|
+
|
|
835
|
+
char dummy;
|
|
836
|
+
size_t size = 1; // Note: size = 1 is required, otherwise libuv always returns EINVAL.
|
|
837
|
+
int result = uv_os_getenv(name_str, &dummy, &size);
|
|
838
|
+
free(name_str);
|
|
839
|
+
|
|
840
|
+
if (result == UV_ENOENT) return -1;
|
|
841
|
+
if (result == 0 || result == UV_ENOBUFS) return (Int)size;
|
|
842
|
+
return -1;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// Returns the value, given the caller already knows it exists with
|
|
846
|
+
// the given buffer size. Caller passes the size from c_getenv_size.
|
|
847
|
+
struct Pos c_getenv_value(struct Pos name, Int size) {
|
|
848
|
+
char* name_str = c_bytearray_into_nullterminated_string(name);
|
|
849
|
+
erasePositive(name);
|
|
850
|
+
|
|
851
|
+
char* buffer = malloc((size_t)size);
|
|
852
|
+
size_t buf_size = (size_t)size;
|
|
853
|
+
int result = uv_os_getenv(name_str, buffer, &buf_size);
|
|
854
|
+
free(name_str);
|
|
855
|
+
|
|
856
|
+
if (result != 0) {
|
|
857
|
+
// This should not happen, since we already checked with `c_getenv_size`
|
|
858
|
+
// ...but in case it does, we return an empty string instead.
|
|
859
|
+
free(buffer);
|
|
860
|
+
return c_bytearray_new(0);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
struct Pos value = c_bytearray_from_nullterminated_string(buffer);
|
|
864
|
+
free(buffer);
|
|
865
|
+
return value;
|
|
866
|
+
}
|
|
867
|
+
|
|
829
868
|
#endif
|
|
@@ -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/og-image.jpg"><meta name=twitter:image content="https://www.eclipse.org/images/og-image.jpg"><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=
|
|
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/og-image.jpg"><meta name=twitter:image content="https://www.eclipse.org/images/og-image.jpg"><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=1772993988"><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 href=#main class=skip-link>Skip to content</a><div class=eclipsefdn-featured-story-banner data-publish-target=eclipse_org></div><header class="header-wrapper header-wrapper" id=header><div class="navigation-bar dark"><div class=container><div class=navigation-bar-inner><div class=navigation-bar-left><a class="focus-highlight focus-inverse" href=/><img class=navigation-bar-brand src=https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-foundation-white-orange.svg alt="Eclipse Foundation"></a></div><nav class="navigation-bar-nav hidden-xs hidden-sm"><ul><li><button type=button class="btn btn-link" data-target=join-us-menu>Join us</button></li><li><button type=button class="btn btn-link" data-target=what-we-do-menu>What we do</button></li><li><button type=button class="btn btn-link" data-target=resources-menu>Resources</button></li><li><button type=button class="btn btn-link" data-target=about-us-menu>About us</button></li></ul></nav><div class=navigation-bar-right><div class="navigation-bar-controls hidden-xs hidden-sm"><ul><li class=dropdown><a class="dropdown-toggle link-unstyled focus-highlight" tabindex=0 id=search-dropdown-toggle data-toggle=dropdown href=# aria-label=Search><i class="fa-solid fa-magnifying-glass" aria-hidden=true></i></a><form class="search-bar dropdown-menu dropdown-menu-right" aria-labelledby=search-dropdown-toggle action=https://www.eclipse.org/home/search/ method=get><input class=search-bar-input name=q placeholder=Search>
|
|
3
3
|
<button class="btn btn-link" type=submit>
|
|
4
4
|
<i class="fa-solid fa-arrow-right"></i></button></form></li><li class=dropdown><a class="dropdown-toggle focus-highlight" id=user-menu href=# data-toggle=dropdown aria-haspopup=true aria-expanded=false tabindex=0><i class="fa-regular fa-user" aria-hidden=true></i></a><ul class="dropdown-menu dropdown-menu-right" aria-labelledby=user-menu><li><a href=https://accounts.eclipse.org/user><i class="fa-solid fa-user margin-right-10" aria-hidden=true></i>
|
|
5
5
|
View my account</a></li><li><a href=https://accounts.eclipse.org/user/edit><i class="fa-solid fa-edit margin-right-10" aria-hidden=true></i>
|
|
@@ -43,4 +43,4 @@ Manage cookies</a></li></ul></li></ul></div><div class="navigation-bar-ctas hidd
|
|
|
43
43
|
<i class="fa-brands fa-youtube fa-stack-1x fa-inverse" aria-hidden=true></i></span></a></li><li><a href=https://www.linkedin.com/company/eclipse-foundation aria-label=LinkedIn><span class=fa-stack><i class="fa-solid fa-circle fa-stack-2x" aria-hidden=true></i>
|
|
44
44
|
<i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i></span></a></li></ul></section><section class=newsletter-section><p class="subheading text-tertiary">Stay up to date</p><h2>Subscribe to our newsletter</h2><form class="newsletter-form margin-top-40" id=mc-embedded-subscribe-form action="https://eclipse.us6.list-manage.com/subscribe/post?u=eaf9e1f06f194eadc66788a85&id=e7538485cd&f_id=00f9c2e1f0" method=post novalidate target=_blank><div class=text-field-outlined><input name=EMAIL type=email placeholder="Your email">
|
|
45
45
|
<button class=newsletter-form-submit type=submit name=subscribe id=mc-embedded-subscribe aria-label=Submit>
|
|
46
|
-
<i class="fa-solid fa-arrow-right" aria-hidden=true></i></button></div></form></section><section class=footer-bottom-section><img class="img-responsive logo" src=https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-foundation-white.svg alt="Eclipse Foundation"><div class=legal-information><p>Copyright © Eclipse Foundation AISBL. All rights reserved.</p><ul class=legal-links><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/>Legal</a></li></ul></div></section></div></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=
|
|
46
|
+
<i class="fa-solid fa-arrow-right" aria-hidden=true></i></button></div></form></section><section class=footer-bottom-section><img class="img-responsive logo" src=https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-foundation-white.svg alt="Eclipse Foundation"><div class=legal-information><p>Copyright © Eclipse Foundation AISBL. All rights reserved.</p><ul class=legal-links><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/>Legal</a></li></ul></div></section></div></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1772993988"></script><script>(function(){})(jQuery,document)</script></div></body></html>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
|
|
9
9
|
|
|
10
|
-
<!-- This site is optimized with the Yoast SEO plugin v27.
|
|
10
|
+
<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https://yoast.com/product/yoast-seo-wordpress/ -->
|
|
11
11
|
<title>The MIT License - Open Source Initiative</title>
|
|
12
12
|
<link rel="canonical" href="https://opensource.org/license/mit" />
|
|
13
13
|
<meta property="og:locale" content="en_US" />
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
<meta property="og:description" content="Copyright <YEAR> <COPYRIGHT HOLDER> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the..." />
|
|
17
17
|
<meta property="og:url" content="https://opensource.org/license/mit" />
|
|
18
18
|
<meta property="og:site_name" content="Open Source Initiative" />
|
|
19
|
-
<meta property="article:modified_time" content="
|
|
19
|
+
<meta property="article:modified_time" content="2026-03-07T20:10:55+00:00" />
|
|
20
|
+
<meta property="og:image" content="https://opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg" />
|
|
20
21
|
<meta name="twitter:card" content="summary_large_image" />
|
|
21
22
|
<meta name="twitter:label1" content="Est. reading time" />
|
|
22
23
|
<meta name="twitter:data1" content="1 minute" />
|
|
23
|
-
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://opensource.org/license/mit","url":"https://opensource.org/license/mit","name":"The MIT License - Open Source Initiative","isPartOf":{"@id":"https://opensource.org/#website"},"datePublished":"2006-10-31T04:56:16+00:00","dateModified":"
|
|
24
|
+
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://opensource.org/license/mit","url":"https://opensource.org/license/mit","name":"The MIT License - Open Source Initiative","isPartOf":{"@id":"https://opensource.org/#website"},"primaryImageOfPage":{"@id":"https://opensource.org/license/mit#primaryimage"},"image":{"@id":"https://opensource.org/license/mit#primaryimage"},"thumbnailUrl":"https://opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg","datePublished":"2006-10-31T04:56:16+00:00","dateModified":"2026-03-07T20:10:55+00:00","breadcrumb":{"@id":"https://opensource.org/license/mit#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://opensource.org/license/mit"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://opensource.org/license/mit#primaryimage","url":"https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?fit=960%2C540&quality=89&ssl=1","contentUrl":"https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?fit=960%2C540&quality=89&ssl=1","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https://opensource.org/license/mit#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://opensource.org/"},{"@type":"ListItem","position":2,"name":"Licenses","item":"https://opensource.org/license"},{"@type":"ListItem","position":3,"name":"Licenses & Standards","item":"https://opensource.org/?page_id=339"},{"@type":"ListItem","position":4,"name":"The MIT License"}]},{"@type":"WebSite","@id":"https://opensource.org/#website","url":"https://opensource.org/","name":"Open Source Initiative","description":"The steward of the Open Source Definition, setting the foundation for the Open Source Software ecosystem.","publisher":{"@id":"https://opensource.org/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://opensource.org/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://opensource.org/#organization","name":"Open Source Initiative","url":"https://opensource.org/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://opensource.org/#/schema/logo/image/","url":"https://i0.wp.com/opensource.org/wp-content/uploads/2023/03/cropped-OSI-horizontal-large.png?fit=1388%2C496&quality=80&ssl=1","contentUrl":"https://i0.wp.com/opensource.org/wp-content/uploads/2023/03/cropped-OSI-horizontal-large.png?fit=1388%2C496&quality=80&ssl=1","width":1388,"height":496,"caption":"Open Source Initiative"},"image":{"@id":"https://opensource.org/#/schema/logo/image/"}}]}</script>
|
|
24
25
|
<!-- / Yoast SEO plugin. -->
|
|
25
26
|
|
|
26
27
|
|
|
@@ -233,7 +234,7 @@ img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
|
|
|
233
234
|
/*# sourceURL=wp-emoji-styles-inline-css */
|
|
234
235
|
</style>
|
|
235
236
|
<link rel='stylesheet' id='wp-block-library-css' href='https://opensource.org/wp-content/plugins/gutenberg/build/styles/block-library/style.min.css?ver=22.6.0' type='text/css' media='all' />
|
|
236
|
-
<link rel='stylesheet' id='jetpack-forms-layout-css' href='https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-forms/src/../dist/contact-form/css/jetpack-forms-layout.css?ver=15.6
|
|
237
|
+
<link rel='stylesheet' id='jetpack-forms-layout-css' href='https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-forms/src/../dist/contact-form/css/jetpack-forms-layout.css?ver=15.6' type='text/css' media='all' />
|
|
237
238
|
<style id='osi-event-list-style-inline-css' type='text/css'>
|
|
238
239
|
/*!***************************************************************************************************************************************************************************************************************************************!*\
|
|
239
240
|
!*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[3].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!./src/style.scss ***!
|
|
@@ -274,8 +275,8 @@ body{--pds-tabs-color-accent:var(--wp--preset--color--primary,#333);--pds-tabs-a
|
|
|
274
275
|
.jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em}
|
|
275
276
|
/*# sourceURL=https://opensource.org/wp-content/plugins/jetpack/_inc/blocks/sharing-buttons/view.css */
|
|
276
277
|
</style>
|
|
277
|
-
<link rel='stylesheet' id='coblocks-frontend-css' href='https://opensource.org/wp-content/plugins/coblocks/dist/style-coblocks-1.css?ver=3.1.
|
|
278
|
-
<link rel='stylesheet' id='coblocks-extensions-css' href='https://opensource.org/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.
|
|
278
|
+
<link rel='stylesheet' id='coblocks-frontend-css' href='https://opensource.org/wp-content/plugins/coblocks/dist/style-coblocks-1.css?ver=3.1.17' type='text/css' media='all' />
|
|
279
|
+
<link rel='stylesheet' id='coblocks-extensions-css' href='https://opensource.org/wp-content/plugins/coblocks/dist/style-coblocks-extensions.css?ver=3.1.17' type='text/css' media='all' />
|
|
279
280
|
<link rel='stylesheet' id='coblocks-animation-css' href='https://opensource.org/wp-content/plugins/coblocks/dist/style-coblocks-animation.css?ver=2677611078ee87eb3b1c' type='text/css' media='all' />
|
|
280
281
|
<link rel='stylesheet' id='osi-et-theme-css' href='https://opensource.org/wp-content/mu-plugins/osi-editor-tweaks/build/styles/theme/theme.scss.css?ver=1.0.0' type='text/css' media='all' />
|
|
281
282
|
<link rel='stylesheet' id='contact-form-7-css' href='https://opensource.org/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.5' type='text/css' media='all' />
|
|
@@ -307,9 +308,8 @@ body{--pds-tabs-color-accent:var(--wp--preset--color--primary,#333);--pds-tabs-a
|
|
|
307
308
|
/*# sourceURL=osi-style-inline-css */
|
|
308
309
|
</style>
|
|
309
310
|
<link rel='stylesheet' id='swiper-css-css' href='https://unpkg.com/swiper@11/swiper-bundle.min.css?ver=1750065233' type='text/css' media='all' />
|
|
310
|
-
<link rel='stylesheet' id='genericons-css' href='https://
|
|
311
|
+
<link rel='stylesheet' id='genericons-css' href='https://c0.wp.com/p/jetpack/15.6/_inc/genericons/genericons/genericons.css' type='text/css' media='all' />
|
|
311
312
|
<link rel='stylesheet' id='jetpack-social-menu-css' href='https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-classic-theme-helper/src/social-menu/social-menu.css?ver=1.0' type='text/css' media='all' />
|
|
312
|
-
<link rel='stylesheet' id='nelio-content-premium-series-default-css-css' href='https://opensource.org/wp-content/plugins/nelio-content-premium/includes/features/series/default.css?ver=4.2.1' type='text/css' media='all' />
|
|
313
313
|
<link rel='stylesheet' id='syndication-style-css' href='https://opensource.org/wp-content/plugins/syndication-links/css/syn.min.css?ver=4.5.3' type='text/css' media='all' />
|
|
314
314
|
<script type="text/javascript" id="plausible-analytics-js-after">
|
|
315
315
|
/* <![CDATA[ */
|
|
@@ -344,7 +344,7 @@ jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","curr
|
|
|
344
344
|
<script type="text/javascript" src="https://c0.wp.com/c/6.9.1/wp-includes/js/jquery/ui/dialog.min.js" id="jquery-ui-dialog-js"></script>
|
|
345
345
|
<script type="text/javascript" id="events-manager-js-extra">
|
|
346
346
|
/* <![CDATA[ */
|
|
347
|
-
var EM = {"ajaxurl":"https://opensource.org/wp-admin/admin-ajax.php","locationajaxurl":"https://opensource.org/wp-admin/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https://opensource.org/wp-content/plugins/events-manager/includes/css/jquery-ui/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false},"month_format":"M Y"},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https://opensource.org/wp-content/plugins/events-manager","assets":{"input.em-uploader":{"js":{"em-uploader":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/em-uploader.js?v=7.2.3.1","event":"em_uploader_ready"}}},".em-event-editor":{"js":{"event-editor":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/events-manager-event-editor.js?v=7.2.3.1","event":"em_event_editor_ready"}},"css":{"event-editor":"https://opensource.org/wp-content/plugins/events-manager/includes/css/events-manager-event-editor.min.css?v=7.2.3.1"}},".em-recurrence-sets, .em-timezone":{"js":{"luxon":{"url":"luxon/luxon.js?v=7.2.3.1","event":"em_luxon_ready"}}},".em-booking-form, #em-booking-form, .em-booking-recurring, .em-event-booking-form":{"js":{"em-bookings":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/bookingsform.js?v=7.2.3.1","event":"em_booking_form_js_loaded"},"em-coupons":{"url":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.js?v=3.7.2.3","requires":"em-bookings"}},"css":{"em-coupons":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.min.css?v=3.7.2.3"}},"#em-opt-archetypes":{"js":{"archetypes":"https://opensource.org/wp-content/plugins/events-manager/includes/js/admin-archetype-editor.js?v=7.2.3.1","archetypes_ms":"https://opensource.org/wp-content/plugins/events-manager/includes/js/admin-archetypes.js?v=7.2.3.1","qs":"qs/qs.js?v=7.2.3.1"}},".em-cart-coupons-form":{"js":{"em-coupons-cart":{"url":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons-cart.js?v=3.7.2.3","event":"em_timepicker_ready"}},"css":{"em-coupons":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.min.css?v=3.7.2.3"}}},"cached":"1","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https://opensource.org/wp-admin/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"
|
|
347
|
+
var EM = {"ajaxurl":"https://opensource.org/wp-admin/admin-ajax.php","locationajaxurl":"https://opensource.org/wp-admin/admin-ajax.php?action=locations_search","firstDay":"1","locale":"en","dateFormat":"yy-mm-dd","ui_css":"https://opensource.org/wp-content/plugins/events-manager/includes/css/jquery-ui/build.min.css","show24hours":"0","is_ssl":"1","autocomplete_limit":"10","calendar":{"breakpoints":{"small":560,"medium":908,"large":false},"month_format":"M Y"},"phone":"","datepicker":{"format":"Y-m-d"},"search":{"breakpoints":{"small":650,"medium":850,"full":false}},"url":"https://opensource.org/wp-content/plugins/events-manager","assets":{"input.em-uploader":{"js":{"em-uploader":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/em-uploader.js?v=7.2.3.1","event":"em_uploader_ready"}}},".em-event-editor":{"js":{"event-editor":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/events-manager-event-editor.js?v=7.2.3.1","event":"em_event_editor_ready"}},"css":{"event-editor":"https://opensource.org/wp-content/plugins/events-manager/includes/css/events-manager-event-editor.min.css?v=7.2.3.1"}},".em-recurrence-sets, .em-timezone":{"js":{"luxon":{"url":"luxon/luxon.js?v=7.2.3.1","event":"em_luxon_ready"}}},".em-booking-form, #em-booking-form, .em-booking-recurring, .em-event-booking-form":{"js":{"em-bookings":{"url":"https://opensource.org/wp-content/plugins/events-manager/includes/js/bookingsform.js?v=7.2.3.1","event":"em_booking_form_js_loaded"},"em-coupons":{"url":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.js?v=3.7.2.3","requires":"em-bookings"}},"css":{"em-coupons":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.min.css?v=3.7.2.3"}},"#em-opt-archetypes":{"js":{"archetypes":"https://opensource.org/wp-content/plugins/events-manager/includes/js/admin-archetype-editor.js?v=7.2.3.1","archetypes_ms":"https://opensource.org/wp-content/plugins/events-manager/includes/js/admin-archetypes.js?v=7.2.3.1","qs":"qs/qs.js?v=7.2.3.1"}},".em-cart-coupons-form":{"js":{"em-coupons-cart":{"url":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons-cart.js?v=3.7.2.3","event":"em_timepicker_ready"}},"css":{"em-coupons":"https://opensource.org/wp-content/plugins/events-manager-pro/add-ons/coupons/coupons.min.css?v=3.7.2.3"}}},"cached":"1","bookingInProgress":"Please wait while the booking is being submitted.","tickets_save":"Save Ticket","bookingajaxurl":"https://opensource.org/wp-admin/admin-ajax.php","bookings_export_save":"Export Bookings","bookings_settings_save":"Save Settings","booking_delete":"Are you sure you want to delete?","booking_offset":"30","bookings":{"submit_button":{"text":{"default":"Submit Booking","free":"Submit Booking","payment":"Submit Booking - %s","processing":"Processing ..."}},"update_listener":""},"bb_full":"Sold Out","bb_book":"Book Now","bb_booking":"Booking...","bb_booked":"Booking Submitted","bb_error":"Booking Error. Try again?","bb_cancel":"Cancel","bb_canceling":"Canceling...","bb_cancelled":"Cancelled","bb_cancel_error":"Cancellation Error. Try again?","txt_search":"Search","txt_searching":"Searching...","txt_loading":"Loading...","cache":"1","api_nonce":"283ecfb965","attendance_api_url":"https://opensource.org/wp-json/events-manager/v1/attendance"};
|
|
348
348
|
//# sourceURL=events-manager-js-extra
|
|
349
349
|
/* ]]> */
|
|
350
350
|
</script>
|
|
@@ -1141,6 +1141,13 @@ a code { color: var(--wp--preset--color--brand-links); text-decoration: underlin
|
|
|
1141
1141
|
<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
|
|
1142
1142
|
<p>THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
|
|
1143
1143
|
</div>
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
<figure class="wp-block-image size-full has-lightbox"><a href="https://opensource.org/blog/state-of-the-source-at-ato-2025-licensing-201"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="640" height="360" src="https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?resize=640%2C360&quality=89&ssl=1" alt="" class="wp-image-324890" srcset="https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?w=960&quality=89&ssl=1 960w, https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?resize=300%2C169&quality=89&ssl=1 300w, https://i0.wp.com/opensource.org/wp-content/uploads/2006/10/Open-Source-201-1.jpg?resize=768%2C432&quality=89&ssl=1 768w" sizes="(max-width: 640px) 100vw, 640px" /></a></figure>
|
|
1144
1151
|
<div class="syndication-links"></div>
|
|
1145
1152
|
<hr />
|
|
1146
1153
|
<div class="license-comments">
|
|
@@ -1425,15 +1432,15 @@ a code { color: var(--wp--preset--color--brand-links); text-decoration: underlin
|
|
|
1425
1432
|
<div id="cmplz-manage-consent" data-nosnippet="true"><button class="cmplz-btn cmplz-hidden cmplz-manage-consent manage-consent-1">Manage consent</button>
|
|
1426
1433
|
|
|
1427
1434
|
</div><script type="text/javascript" src="https://opensource.org/wp-content/mu-plugins/osi-editor-tweaks/build/scripts/theme/theme.js?ver=eb7b34d85380496c7763" id="osi-et-theme-js"></script>
|
|
1428
|
-
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/coblocks-animation.js?ver=3.1.
|
|
1429
|
-
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/vendors/tiny-swiper.js?ver=3.1.
|
|
1435
|
+
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/coblocks-animation.js?ver=3.1.17" id="coblocks-animation-js"></script>
|
|
1436
|
+
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/vendors/tiny-swiper.js?ver=3.1.17" id="coblocks-tiny-swiper-js"></script>
|
|
1430
1437
|
<script type="text/javascript" id="coblocks-tinyswiper-initializer-js-extra">
|
|
1431
1438
|
/* <![CDATA[ */
|
|
1432
1439
|
var coblocksTinyswiper = {"carouselPrevButtonAriaLabel":"Previous","carouselNextButtonAriaLabel":"Next","sliderImageAriaLabel":"Image"};
|
|
1433
1440
|
//# sourceURL=coblocks-tinyswiper-initializer-js-extra
|
|
1434
1441
|
/* ]]> */
|
|
1435
1442
|
</script>
|
|
1436
|
-
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/coblocks-tinyswiper-initializer.js?ver=3.1.
|
|
1443
|
+
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/coblocks/dist/js/coblocks-tinyswiper-initializer.js?ver=3.1.17" id="coblocks-tinyswiper-initializer-js"></script>
|
|
1437
1444
|
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/gutenberg/build/scripts/hooks/index.min.js?ver=7496969728ca0f95732d" id="wp-hooks-js"></script>
|
|
1438
1445
|
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/gutenberg/build/scripts/i18n/index.min.js?ver=781d11515ad3d91786ec" id="wp-i18n-js"></script>
|
|
1439
1446
|
<script type="text/javascript" id="wp-i18n-js-after">
|
|
@@ -1474,12 +1481,12 @@ wp.jpI18nLoader.state = {"baseUrl":"https://opensource.org/wp-content/languages/
|
|
|
1474
1481
|
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/gutenberg/build/scripts/url/index.min.js?ver=bb0f766c3d2efe497871" id="wp-url-js"></script>
|
|
1475
1482
|
<script type="text/javascript" id="jetpack-instant-search-js-before">
|
|
1476
1483
|
/* <![CDATA[ */
|
|
1477
|
-
var JetpackInstantSearchOptions={"overlayOptions":{"colorTheme":"light","enableInfScroll":true,"enableFilteringOpensOverlay":true,"enablePostDate":true,"enableProductPrice":true,"enableSort":true,"highlightColor":"#fdd7b9","overlayTrigger":"submit","resultFormat":"expanded","showPoweredBy":true,"defaultSort":"relevance","excludedPostTypes":["attachment"]},"homeUrl":"https://opensource.org","locale":"en-US","postsPerPage":12,"siteId":210318891,"postTypes":{"post":{"singular_name":"Post","name":"Posts"},"page":{"singular_name":"Page","name":"Pages"},"attachment":{"singular_name":"Media","name":"Media"},"supporter":{"singular_name":"Supporter","name":"Supporters"},"board-member":{"singular_name":"Board Member","name":"Board Members"},"license":{"singular_name":"License","name":"Licenses"},"meeting-minutes":{"singular_name":"Meeting Minutes","name":"Meeting Minutes"},"press-mentions":{"singular_name":"Press mentions","name":"Press mentions"},"podcast":{"singular_name":"Episode","name":"Episode"}},"webpackPublicPath":"https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/","isPhotonEnabled":true,"isFreePlan":false,"apiRoot":"https://opensource.org/wp-json/","apiNonce":"
|
|
1484
|
+
var JetpackInstantSearchOptions={"overlayOptions":{"colorTheme":"light","enableInfScroll":true,"enableFilteringOpensOverlay":true,"enablePostDate":true,"enableProductPrice":true,"enableSort":true,"highlightColor":"#fdd7b9","overlayTrigger":"submit","resultFormat":"expanded","showPoweredBy":true,"defaultSort":"relevance","excludedPostTypes":["attachment"]},"homeUrl":"https://opensource.org","locale":"en-US","postsPerPage":12,"siteId":210318891,"postTypes":{"post":{"singular_name":"Post","name":"Posts"},"page":{"singular_name":"Page","name":"Pages"},"attachment":{"singular_name":"Media","name":"Media"},"supporter":{"singular_name":"Supporter","name":"Supporters"},"board-member":{"singular_name":"Board Member","name":"Board Members"},"license":{"singular_name":"License","name":"Licenses"},"meeting-minutes":{"singular_name":"Meeting Minutes","name":"Meeting Minutes"},"press-mentions":{"singular_name":"Press mentions","name":"Press mentions"},"podcast":{"singular_name":"Episode","name":"Episode"}},"webpackPublicPath":"https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/","isPhotonEnabled":true,"isFreePlan":false,"apiRoot":"https://opensource.org/wp-json/","apiNonce":"283ecfb965","isPrivateSite":false,"isWpcom":false,"hasOverlayWidgets":true,"widgets":[{"filters":[{"name":"Post Types","type":"post_type","count":6,"widget_id":"jetpack-search-filters-4","filter_id":"post_type_0"},{"name":"Categories","type":"taxonomy","taxonomy":"category","count":5,"widget_id":"jetpack-search-filters-4","filter_id":"taxonomy_1"},{"name":"Tags","type":"taxonomy","taxonomy":"post_tag","count":5,"widget_id":"jetpack-search-filters-4","filter_id":"taxonomy_2"},{"name":"Year","type":"date_histogram","count":5,"field":"post_date","interval":"year","widget_id":"jetpack-search-filters-4","filter_id":"date_histogram_3"}],"widget_id":"jetpack-search-filters-4"}],"widgetsOutsideOverlay":[],"hasNonSearchWidgets":false,"preventTrackingCookiesReset":false,"disableTracking":false};
|
|
1478
1485
|
//# sourceURL=jetpack-instant-search-js-before
|
|
1479
1486
|
/* ]]> */
|
|
1480
1487
|
</script>
|
|
1481
1488
|
<script type="text/javascript" src="https://opensource.org/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&ver=c6f0bb58d03d6acccc5b" id="jetpack-instant-search-js"></script>
|
|
1482
|
-
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=
|
|
1489
|
+
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="//stats.wp.com/w.js?ver=202611" id="jp-tracks-js"></script>
|
|
1483
1490
|
<script type="text/javascript" id="osi-theme-scripts-js-before">
|
|
1484
1491
|
/* <![CDATA[ */
|
|
1485
1492
|
const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-ajax.php","action":"osi_license_db"}
|
|
@@ -1491,15 +1498,15 @@ const OSI_LICENSE_DB = {"ajaxURL":"https:\/\/opensource.org\/wp-admin\/admin-aja
|
|
|
1491
1498
|
<script type="text/javascript" id="jetpack-stats-js-before">
|
|
1492
1499
|
/* <![CDATA[ */
|
|
1493
1500
|
_stq = window._stq || [];
|
|
1494
|
-
_stq.push([ "view", {"v":"ext","blog":"210318891","post":"395","tz":"0","srv":"opensource.org","hp":"atomic","ac":"3","amp":"0","j":"1:15.6
|
|
1501
|
+
_stq.push([ "view", {"v":"ext","blog":"210318891","post":"395","tz":"0","srv":"opensource.org","hp":"atomic","ac":"3","amp":"0","j":"1:15.6"} ]);
|
|
1495
1502
|
_stq.push([ "clickTrackerInit", "210318891", "395" ]);
|
|
1496
1503
|
//# sourceURL=jetpack-stats-js-before
|
|
1497
1504
|
/* ]]> */
|
|
1498
1505
|
</script>
|
|
1499
|
-
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-
|
|
1506
|
+
<script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202611.js" id="jetpack-stats-js" defer="defer" data-wp-strategy="defer"></script>
|
|
1500
1507
|
<script type="text/javascript" id="cmplz-cookiebanner-js-extra">
|
|
1501
1508
|
/* <![CDATA[ */
|
|
1502
|
-
var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"
|
|
1509
|
+
var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"140","version":"7.4.4.2","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://opensource.org/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"22","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://opensource.org/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=140","page_links":{"eu":{"cookie-statement":{"title":"","url":"https://opensource.org/osd"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
|
|
1503
1510
|
//# sourceURL=cmplz-cookiebanner-js-extra
|
|
1504
1511
|
/* ]]> */
|
|
1505
1512
|
</script>
|
|
@@ -1515,11 +1522,11 @@ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(
|
|
|
1515
1522
|
/* ]]> */
|
|
1516
1523
|
</script>
|
|
1517
1524
|
|
|
1518
|
-
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'
|
|
1525
|
+
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9d97c0f76c369bf6',t:'MTc3MzAzNDkxOQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
|
|
1519
1526
|
</html>
|
|
1520
1527
|
<!--
|
|
1521
|
-
generated
|
|
1522
|
-
generated in 0.
|
|
1523
|
-
served from batcache in 0.
|
|
1524
|
-
expires in
|
|
1528
|
+
generated 153 seconds ago
|
|
1529
|
+
generated in 0.975 seconds
|
|
1530
|
+
served from batcache in 0.003 seconds
|
|
1531
|
+
expires in 147 seconds
|
|
1525
1532
|
-->
|