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: content/news/2025/Funding Announcement Q2 2025.md
+95-1Lines changed: 95 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -7,4 +7,98 @@ draft: True
7
7
8
8
---
9
9
10
-
Clojurists Together is excited to announce that we will be funding 6 projects in Q2 2025 for a total of $33K USD (3 for $9K and 3 shorter or more experimental projects for $2K). Thanks to all our members for making this happen!
10
+
Clojurists Together is excited to announce that we will be funding 6 projects in Q2 2025 for a total of $33K USD (3 for $9K and 3 shorter or more experimental projects for $2K). Thanks to all our members for making this happen! Congratulations to the 6 developers below:
11
+
12
+
**$9K Projects**
13
+
[Bozhidar Batsov: CIDER](#bozhidar-batsov-cider)
14
+
[Brandon Ringe: CALVA](#brandon-ringe-calva)
15
+
Jeaye Wilkerson: Jank
16
+
17
+
**$2K Projects**
18
+
Jeremiah Coyle: Bling
19
+
Karl Pietrzak: CodeCombat
20
+
[Siyoung Byuan: Scicloj - Building Bridges to New Clojure Users](#siyoung-buyan-building-bridges-to-new-clojure-users)
21
+
22
+
## Bozhidar Batsov: CIDER
23
+
Provide continued support for CIDER, nREPL and the related libraries (e.g. Orchard, cidernrepl, etc) and improve them in various ways.
24
+
25
+
Some ideas that I have in my mind:
26
+
- Improve support for alternative Clojure runtimes
27
+
- Simplify some of CIDER's internals (e.g. jack-in, session management)
28
+
- Improve CIDER's documentation (potentially record a few up-to-date video tutorials as well)
29
+
- Improve clojure-ts-mode and continue the work towards it replacing clojure-mode
30
+
- Add support for clojure-ts-mode in inf-clojure
31
+
- Continue to move logic outside of cider-nrepl
32
+
- Improvement to the nREPL specification and documentation; potentially built some test suite for nREPL specification compatibility
33
+
- Various improvements to the nREPL protocol
34
+
- Stabilize Orchard and cider-nrepl enough to do a 1.0 release for both projects
35
+
- Build a roadmap for CIDER 2.0
36
+
- Write up an analysis of the State of Clojure 2024 survey results (connected to the roadmap item)
37
+
38
+
39
+
## Brandon Ringe: CALVA
40
+
I'll be working on a new REPL output view for Calva, which is a webview in VS Code. The current default REPL output view utilizes an editor and somewhat emulates a terminal prompt. The performance of the editor view degrades when there's a high volume of output and/or when there are large data structures printed in it. The webview will allow us to add more rich features to the output webview, while also providing better performance.
41
+
42
+
I've started this work, the and I'll use the funding of Clojurists Together to get the work over the finish line and release an initial, opt-in version of the REPL output webview. I'll also be adding tests, responding to user feedback about the feature, fixing bugs, and adding features to it.
43
+
44
+
This is the first feature of Calva that integrates with VS Code's API directly from ClojureScript. This is partly an experiment to see if writing more of Calva in ClojureScript is a good idea; I suspect that it is.
45
+
46
+
## Jeaye Wilkerson: Jank
47
+
In Q1 2025, I built out jank's error reporting to stand completely in a category of its own, within the lisp world. We have macro expansion stack tracing, source info preserved across expansions so we can point at specific forms in a syntax quote, and even clever solutions for deducing source info for non-meta objects like numbers and keywords. All of this is coupled with gorgeous terminal reporting with syntax highlighting, underlining, and box formatting.
48
+
49
+
In Q2, I plan to aim even higher. I'm going to build jank's seamless C++ interop system. We had native/raw, previously, for embedding C++ strings right inside of jank code. This worked alright, but it was tied to jank having C++ codegen. Now that we have LLVM IR codegen, embedding C++ is less practical. Beyond that, though, we want to do better. Here's a snippet of what I have designed for jank this quarter.
50
+
; Feed some C++ into Clang so we can start working on it.
51
+
; Including files can also be done in a similar way.
52
+
; This is very similar to native/raw, but is only used for declarations.
; `let` is a Clojure construct, but `c++/person.` creates a value
56
+
; of the `person` struct we just defined above, in automatic memory (i.e. no heap allocation).
57
+
(let [s (c++/person. "sally siu")
58
+
; We can then access structs using Clojure's normal interop syntax. n (.-name s)
59
+
; We can call member functions on native values, too.
60
+
; Here we call std::string::size on the name member.
61
+
l (.size n)]
62
+
; When we try to gives these native values to `println`, jank will
63
+
; detect that they need boxing and will automatically find a
64
+
; conversion function from their native type to jank's boxed
65
+
; `object_ptr` type. If such a function doesn't exist, the
66
+
; jank compiler fails with a type error.
67
+
(println n l))
68
+
69
+
Zoom image.png
70
+
image.png 57 KB View full-size Download
71
+
72
+
73
+
74
+
In truth, this is basically the same exact syntax that Clojure has for Java interop, except for the c++ namespace to disambiguate. Since I want jank to work with other langs in the future, I think it makes sense to spell out the lang. Later, we may have a swift or rust namespace which works similarly. But let's talk about this code.
75
+
76
+
This interop would be unprecedented. Sure, Clojure JVM does it, but we're talking about the native world. We're talking about C++. Ruby, Python, Lua, etc. can all reach into C. The C ABI is the lingua franca of the native world. But here, we're reaching into C++ from a dynamic lang. We'll call constructors, pull out members, call member functions, and jank will automatically ensure that destructors are called for any locals. Furthermore, jank already has full JIT compilation abilities for C++ code, so that means we can use our seamless interop to instantiate templates, define new structs which never existed before, etc.
77
+
78
+
## Jeremiah Coyle: Bling
79
+
Bling is a library for rich text formatting in the console. https://github.com/paintparty/bling Work on Bling in Q2 of 2025 will focus on the following 3 goals:
80
+
- Add support for using hiccup to style and format messages
81
+
- Add support a template string syntax to style and format messages
82
+
- Create 1-3 additional formatting templates for callouts, headers, and points-of-interest.
83
+
84
+
The following 4 features are stretch goals for Q2. They will be pursued in the following order when the initial 3 goals are completed.
85
+
- Add support automatic detection of the 3 levels of color support (16-color, 256-color, or Truecolor), using an approach similar to https://github.com/chalk/supports-color
86
+
- Add documentation about how to leverage Bling to create great-looking warnings and errors in your own projects. Example of using bling's templates to create nice warnings can be found {here:](https://github.com/paintparty/fireworks?tab=readme-ov-file#helpful-warnings-forbad-option-values)
87
+
- Add documentation about using Bling in conjunction with existing libraries which format Spec and Malli messages into human readable form.
88
+
- Support arbitrary hex colors, and their conversion, if necessary, to x256
89
+
90
+
91
+
## Karl Pietrzak: Code Combat
92
+
My project will focus on adding Clojure(Script) to CodeCombat
93
+
See Wiki page at https://github.com/codecombat/codecombat/wiki/Aether
94
+
95
+
96
+
## Siyoung Buyan: Building Bridges to New Clojure Users
97
+
In 2025, Scicloj aims to improve the accessibility of Clojure for individuals working with data,
98
+
regardless of their programming backgrounds. The project will initially focus on reviewing
99
+
existing Scicloj libraries, analyzing their codebases, and actively using them to better
100
+
understand their documentation structure. Specifically, the initial effort will concentrate on
101
+
clearly organizing and distinguishing between tutorials and API documentation. From these
102
+
insights, the project aims to develop standardized templates to encourage greater consistency across the documentation of existing Scicloj ecosystem libraries, making those libraries more robust and user-friendly.
0 commit comments