You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/blog/typelevel-native.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,7 @@ Meanwhile, Scala Native core does not implement an event loop nor offer such API
45
45
Fortunately Daniel Spiewak had the fantastic insight that the “dummy runtime” which I created to initially cross-build Cats Effect for Native could be reformulated into a legitimate event loop implementation by extending it with the capability to “poll” for I/O events: a `PollingExecutorScheduler`.
46
46
47
47
The [`PollingExecutorScheduler`] implements both [`ExecutionContext`] and [`Scheduler`] and maintains two queues:
48
-
- a queue of tasks (read: fibers) to execute
48
+
- a queue of tasks (read: fibers) to execute
49
49
- a priority queue of timers (read: `IO.sleep(...)`), sorted by expiration
50
50
51
51
It also defines an abstract method:
@@ -97,7 +97,7 @@ As previously mentioned, these sorts of polling APIs are ubiquitous and not just
97
97
98
98
```c
99
99
#include <curl/curl.h>
100
-
100
+
101
101
CURLMcode curl_multi_poll(CURLM *multi_handle,
102
102
struct curl_waitfd extra_fds[],
103
103
unsigned int extra_nfds,
@@ -148,30 +148,30 @@ Please try the Typelevel Native stack! And even better deploy it, and do so loud
148
148
Besides that, here is a brain-dump of project ideas and existing projects that would love contributors. I am happy to help folks get started on any of these, or ideas of your own!
149
149
150
150
* Creating example applications, templates, and tutorials:
151
-
- If you are short on inspiration, try cross-building existing examples such as [fs2-chat], [kitteh-redis], [Jobby].
152
-
- Spread the word: [you-forgot-a-percentage-sign-or-a-colon].
151
+
- If you are short on inspiration, try cross-building existing examples such as [fs2-chat], [kitteh-redis], [Jobby].
152
+
- Spread the word: [you-forgot-a-percentage-sign-or-a-colon].
153
153
154
154
* Cross-building existing libraries and developing new, Typelevel-stack ones:
155
-
- Go [feral] and implement a pure Scala [custom AWS Lambda runtime] that cross-builds for Native.
156
-
- A pure Scala [gRPC] implementation built on http4s would be fantastic, even for the JVM. Christopher Davenport has published a [proof-of-concept][grpc-playground].
157
-
-[fs2-data] has pure Scala support for a plethora of data formats. The [http4s-fs2-data] integration needs your help to get off the ground!
158
-
- Lack of cross-platform cryptography is one of the remaining sore points in cross-building. I started the [bobcats] project to fill the gap but I am afraid it needs love from a more dedicated maintainer.
155
+
- Go [feral] and implement a pure Scala [custom AWS Lambda runtime] that cross-builds for Native.
156
+
- A pure Scala [gRPC] implementation built on http4s would be fantastic, even for the JVM. Christopher Davenport has published a [proof-of-concept][grpc-playground].
157
+
-[fs2-data] has pure Scala support for a plethora of data formats. The [http4s-fs2-data] integration needs your help to get off the ground!
158
+
- Lack of cross-platform cryptography is one of the remaining sore points in cross-building. I started the [bobcats] project to fill the gap but I am afraid it needs love from a more dedicated maintainer.
159
159
160
160
* Integrations with native libraries:
161
-
- I kick-started [http4s-curl] and would love to see someone take the reigns!
162
-
- An [NGINX Unit] server backend for http4s promises exceptional performance. [snunit] pioneered this approach.
163
-
- Using [quiche] for HTTP/3 looks yummy!
164
-
- An idiomatic wrapper for [SQLite]. See also [davenverse/sqlite-sjs#1] which proposes cross-platform API backed by Doobie on the JVM.
161
+
- I kick-started [http4s-curl] and would love to see someone take the reigns!
162
+
- An [NGINX Unit] server backend for http4s promises exceptional performance. [snunit] pioneered this approach.
163
+
- Using [quiche] for HTTP/3 looks yummy!
164
+
- An idiomatic wrapper for [SQLite]. See also [davenverse/sqlite-sjs#1] which proposes cross-platform API backed by Doobie on the JVM.
165
165
166
166
* Developing I/O-integrated runtimes:
167
-
-[epollcat] supports Linux and macOS and has plenty of opportunity for optimization and development.
168
-
- A [libuv]-based runtime would have solid cross-OS support, including Windows. Prior art in [scala-native-loop].
169
-
- Personally I am excited to work on an [io_uring] runtime.
167
+
-[epollcat] supports Linux and macOS and has plenty of opportunity for optimization and development.
168
+
- A [libuv]-based runtime would have solid cross-OS support, including Windows. Prior art in [scala-native-loop].
169
+
- Personally I am excited to work on an [io_uring] runtime.
170
170
171
171
* Tooling. Anton Sviridov has spear-headed two major projects in this area:
172
-
-[sbt-vcpkg] is working hard to solve the native dependency problem.
173
-
-[sn-bindgen] generates Scala Native bindings to native libraries directly from `*.h` header files. I found it immensely useful while working on http4s-curl, epollcat, and the s2n-tls integration in FS2.
174
-
- Also: we are _badly_ in need of a pure Scala port of the [Java Microbenchmark Harness]. Not the whole thing obviously, but just enough to run the existing Cats Effect benchmarks for example.
172
+
-[sbt-vcpkg] is working hard to solve the native dependency problem.
173
+
-[sn-bindgen] generates Scala Native bindings to native libraries directly from `*.h` header files. I found it immensely useful while working on http4s-curl, epollcat, and the s2n-tls integration in FS2.
174
+
- Also: we are _badly_ in need of a pure Scala port of the [Java Microbenchmark Harness]. Not the whole thing obviously, but just enough to run the existing Cats Effect benchmarks for example.
0 commit comments