From 7dd34c61c432eb7e9e4b175394fc31dedf46d616 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Fri, 31 May 2024 17:31:10 +0000 Subject: [PATCH] Automated publish --- blog/2024-05-31-new-projects/index.html | 1 + blog/feed.xml | 2 +- blog/index.html | 2 +- progress/index.html | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 blog/2024-05-31-new-projects/index.html diff --git a/blog/2024-05-31-new-projects/index.html b/blog/2024-05-31-new-projects/index.html new file mode 100644 index 0000000..07ffa18 --- /dev/null +++ b/blog/2024-05-31-new-projects/index.html @@ -0,0 +1 @@ +jank development update - New projects!
jank development update - New projects!
Apr 27, 2024 · Jeaye Wilkerson

Hey folks! I've been building on last month's addition of lazy sequences, loop*, destructuring, and more. This month, I've worked on rounding out lazy sequences, adding more mutability, better meta support, and some big project updates. Shout-out to Clojurists Together, who are funding my work this quarter.

Chunked sequences

I've expanded the lazy sequence support added last month to include chunked sequences, which pre-load elements in chunks to aid in throughput. At this point, only clojure.core/range returns a chunked sequence, but all of the existing clojure.core functions which should have support for them do.

If you recall from last month, there is a third lazy sequence type: buffered sequences. I won't be implementing those until they're needed, as I'd never even heard of them before researching more into the lazy sequences in Clojure.

Initial quarter goals accomplished

Wrapping up the lazy sequence work, minus buffered sequences, actually checked off all the boxes for my original goals this quarter. There's a bottomless well of new tasks, though, so I've moved onto some others. So, how do I decide what to work on next?

My goal is for you all to be writing jank programs. The most important tasks are the ones which bring me closer to that goal. Let's take a look at what those have been so far.

Volatiles, atoms, and reduced

Most programs have some of mutation and we generally handle that with volatiles and atoms in Clojure. jank already supported transients for most data structures, but we didn't have a way to hold mutable boxes to immutable values. Volatiles are also essential for many transducers, which I'll mention a bit later. This month, both volatiles and atoms have been implemented.

Implementing atoms involved a fair amount of research, since lockless programming with atomics is not nearly as straightforward as one might expect.

As part of implementing atoms, I also added support for the @ reader macro and the overall derefable behavior. This same behavior will be used for delays, futures, and others going forward.

Meta handling for defs

Last quarter, I added support for meta hints, but I didn't actually use that metadata in many places. Now, with defs, I've added support for the optional meta map and doc string and I also read the meta from the defined symbol. This isn't a huge win, but it does mean that jank can start using doc strings normally, and that we can do things like associate more function meta to the var in a defn, which can improve error reporting.

Monorepo

There will be many jank projects and I've known for a while that I want them all to be in one git monorepo. This makes code sharing, searching, refactoring, and browsing simpler. It gives contributors one place to go in order to get started and one place for all of the issues and discussions. I don't care to convince you of this, if you're not a fan of monorepos, but jank is now using one.

This started by bringing in lein-jank, which was initially created by Saket Patel. From there, I've added a couple of more projects, which I'll cover later in this update.

New clojure.core functions

Following last month's theme, which saw 52 new Clojure functions, I have excellent news. We actually beat that this time, adding 56 new Clojure functions in the past month! However, I only added 23 of those and the other 33 were added by madstap (Aleksander Madland Stapnes). He did this while also adding the transducer arity into pretty much every existing sequence function. Volatiles were originally added to support him in writing those transducers.
dotimeschunk
chunk-firstchunk-next
chunk-restchunk-cons
chunked-seq?volatile!
vswap!vreset!
volatile?deref
reducedreduced?
ensure-reducedunreduced
identical?atom
swap!reset!
swap-vals!reset-vals!
compare-and-set!keep
completingtransduce
run!comp
repeatedlytree-seq
flattencat
interposejuxt
partialdoto
map-indexedkeep-indexed
frequenciesreductions
distinctdistinct?
dedupefnil
every-predsome-fn
group-bynot-empty
get-inassoc-in
update-inupdate
cond->>as->
some->some->>

New projects

At this point, I was thinking that jank actually has pretty darn good Clojure parity, both in terms of syntax and essential core functions. So how can I best take steps toward getting jank onto your computer?

Well, I think the most important thing is for me to start writing some actual projects in jank. Doing this will require improving the tooling and will help identify issues with the existing functionality. The project I've chosen is jank's nREPL server. By the end of the project, we'll not only have more confidence in jank, we'll all be able to connect our editors to running jank programs!

nREPL server

nREPL has some docs on building new servers, so I've taken those as a starting point. However, let's be clear, there are going to be a lot of steps along the way. jank is not currently ready for me to just build this server today and have it all work. I need a goal to work toward, though, and every quest I go on is bringing me one step closer to completing this nREPL server in jank. Let's take a look at some of the things I know I'll need for this.

Module system

jank's module loader was implemented two quarters ago, but since there are no real jank projects, it hasn't seen much battle testing. To start with, I will need to work through some issues with this. Already I've found (and fixed) a couple of bugs related to module writing and reading while getting started on the nREPL server. Further improvements will be needed around how modules are cached and timestamped for iterative compilation.

Native interop

Next, jank's native interop support will need to be expanded. I've started that this month by making it possible to now write C++ sources alongside your jank sources and actually require them from jank! As you may know, jank allows for inline C++ code within the special native/raw form, but by compiling entire C++ files alongside your jank code, it's now much easier to offload certain aspects of your jank programs to C++ without worrying about writing too much C++ as inline jank strings.

jank's native interop support can be further improved by declaratively noting include paths, implicit includes, link paths, and linked libraries as part of the project. This will likely end up necessary for the nREPL server as well.

AOT compilation

Also required for the nREPL server, I'll need to design and implement jank's AOT compilation system. This will involve compiling all jank sources and C++ sources together and can allow for direct linking, whole-program link time optimizations (LTO), and even static runtimes (no interactivity, but smaller binaries).

Distribution

Finally, both jank and the nREPL server will need distribution mechanisms for Linux and macOS. For jank, that may mean AppImages or perhaps more integrated binaries. Either way, I want this to be easy for you all to use and I'm following Rust/cargo as my overall inspiration.

I hope I've succeeded in showing how much work will remains for this nREPL server to be built and shipped out. However, I think having this sort of goal in mind is very powerful and I'm excited that jank is far enough along to where I can actually be doing this.

nREPL server progress

Since I have C++ sources working alongside jank source now, I can use boost::asio to spin up an async TCP server. The data sent over the wire for nREPL servers is encoded with bencode, so I started on a jank.data.bencode project and I have the decoding portion of that working. From there, I wanted to write my tests in jank using clojure.test, but I haven't implemented clojure.test yet, so I looked into doing that. It looks like clojure.test will require me to implement multimethods in jank, which don't yet exist. On top of that, I'll need to implement clojure.template, which requires clojure.walk.

I'll continue on with this depth-first search, implementing as needed, and then unwind all the way back up to making more progress on the nREPL server. Getting clojure.test working will be a huge step toward being able to dogfood more, so I don't want to cut any corners there. Once I can test my decode implementation for bencode, I'll write the encoding (which is easier) and then I'll be back onto implementing the nREPL server functionality.

Hang tight, folks! We've come a long way, and there is still so much work to do, but the wheels are rolling and jank is actually becoming a usable Clojure dialect. Your interest, support, questions, and encouragement are all the inspiration which keeps me going.

Would you like to join in?

  1. Join the community on Slack
  2. Join the design discussions or pick up a ticket on GitHub
  3. Considering becoming a Sponsor
  4. Hire me full-time to work on jank!
\ No newline at end of file diff --git a/blog/feed.xml b/blog/feed.xml index d4b7bd8..554307f 100644 --- a/blog/feed.xml +++ b/blog/feed.xml @@ -1 +1 @@ -2024-05-03T23:01:03.921194968Zjank bloghttps://jank-lang.org/blog/jank development update - Lazy sequences!2024-04-27T00:00:00Z2024-04-27T00:00:00Zhttps://jank-lang.org/blog/2024-04-27-lazy-sequencesJeaye Wilkerson<p>This quarter, I&apos;m being funded by <a href="https://www.clojuriststogether.org/">Clojurists Together</a> to build out jank&apos;s lazy sequences, special <code>loop*</code> form, destructuring, and support for the <code>for</code> and <code>doseq</code> macros. Going into this quarter, I had only a rough idea of how Clojure&apos;s lazy sequences were implemented. Now, a month in, I&apos;m ready to report some impressive progress!</p>jank development update - Syntax quoting!2024-03-29T00:00:00Z2024-03-29T00:00:00Zhttps://jank-lang.org/blog/2024-03-29-syntax-quotingJeaye Wilkerson<p>Oh, hey folks. I was just wrapping up this macro I was writing. One moment.</p>jank development update - Dynamic bindings and more!2024-02-23T00:00:00Z2024-02-23T00:00:00Zhttps://jank-lang.org/blog/2024-02-23-bindingsJeaye Wilkerson<p>For the past couple of months, I have been focused on tackling dynamic var bindings and meta hints, which grew into much, much more. Along the way, I&apos;ve learned some neat things and have positioned jank to be ready for a lot more outside contributions. Grab a seat and I&apos;ll explain it all! Much love to <a href="https://www.clojuriststogether.org/">Clojurists Together</a>, who have sponsored some of my work this quarter.</p>jank's new persistent string is fast2023-12-30T00:00:00Z2023-12-30T00:00:00Zhttps://jank-lang.org/blog/2023-12-30-fast-stringJeaye Wilkerson<p>One thing I&apos;ve been meaning to do is build a custom string class for jank. I had some time, during the holidays, between wrapping up this quarter&apos;s work and starting on next quarter&apos;s, so I decided to see if I could beat both <code>std::string</code> and <code>folly::fbstring</code>, in terms of performance. After all, if we&apos;re gonna make a string class, it&apos;ll need to be fast. :)</p>jank development update - Load all the modules!2023-12-17T00:00:00Z2023-12-17T00:00:00Zhttps://jank-lang.org/blog/2023-12-17-module-loadingJeaye Wilkerson<p>I&apos;ve been quiet for the past couple of months, finishing up this work on jank&apos;s module loading, class path handling, aliasing, and var referring. Along the way, I ran into some very interesting bugs and we&apos;re in for a treat of technical detail in this holiday edition of jank development updates! A warm shout out to my <a href="https://github.com/sponsors/jeaye">Github sponsors</a> and <a href="https://www.clojuriststogether.org/">Clojurists Together</a> for sponsoring this work.</p>jank development update - Module loading2023-10-14T00:00:00Z2023-10-14T00:00:00Zhttps://jank-lang.org/blog/2023-10-14-module-loadingJeaye Wilkerson<p>For the past month and a half, I&apos;ve been building out jank&apos;s support for <code>clojure.core/require</code>, including everything from class path handling to compiling jank files to intermediate code written to the filesystem. This is a half-way report for the quarter. As a warm note, my work on jank this quarter is being sponsored by <a href="https://www.clojuriststogether.org/">Clojurists Together</a>.</p>jank development update - Object model results2023-08-26T00:00:00Z2023-08-26T00:00:00Zhttps://jank-lang.org/blog/2023-08-26-object-modelJeaye Wilkerson<p>As summer draws to a close, in the Pacific Northwest, so too does my term of sponsored work focused on a faster object model for jank. Thanks so much to <a href="https://www.clojuriststogether.org/">Clojurists Together</a> for funding jank&apos;s development. The past quarter has been quite successful and I&apos;m excited to share the results.</p>jank development update - A faster object model2023-07-08T00:00:00Z2023-07-08T00:00:00Zhttps://jank-lang.org/blog/2023-07-08-object-modelJeaye Wilkerson<p>This quarter, my work on jank is being sponsored by <a href="https://www.clojuriststogether.org/">Clojurists Together</a>. The terms of the work are to research a new object model for jank, with the goal of making jank code faster across the board. This is a half-way report and I&apos;m excited to share my results!</p>jank development update - Optimizing a ray tracer2023-04-07T00:00:00Z2023-04-07T00:00:00Zhttps://jank-lang.org/blog/2023-04-07-ray-tracingJeaye Wilkerson<p>After the <a href="/blog/2023-01-13-optimizing-sequences">last post</a>, which focused on optimizing jank&apos;s sequences, I wanted to get jank running a ray tracer I had previously written in Clojure. In this post, I document what was required to start ray tracing in jank and, more importantly, how I chased down the run time in a fierce battle with Clojure&apos;s performance.</p>jank development update - Optimizing sequences2023-01-13T00:00:00Z2023-01-13T00:00:00Zhttps://jank-lang.org/blog/2023-01-13-optimizing-sequencesJeaye Wilkerson<p>In this episode of jank&apos;s development updates, we follow an exciting few weekends as I was digging deep into Clojure&apos;s sequence implementation, building jank&apos;s equivalent, and then benchmarking and profiling in a dizzying race to the bottom.</p>jank development update - Lots of new changes2022-12-08T00:00:00Z2022-12-08T00:00:00Zhttps://jank-lang.org/blog/2022-12-08-progress-updateJeaye Wilkerson<p>I was previously giving updates only in the <a href="https://clojurians.slack.com/archives/C03SRH97FDK">#jank</a> Slack channel, but some of these are getting large enough to warrant more prose. Thus, happily, I can announce that jank has a new blog and I have a <i>lot</i> of new progress to report! Let&apos;s get into the details.</p> \ No newline at end of file +2024-05-31T17:30:05.230665990Zjank bloghttps://jank-lang.org/blog/jank development update - New projects!2024-04-27T00:00:00Z2024-04-27T00:00:00Zhttps://jank-lang.org/blog/2024-05-31-new-projectsJeaye Wilkerson<p>Hey folks! I&apos;ve been building on last month&apos;s addition of lazy sequences, <code>loop*</code>, destructuring, and more. This month, I&apos;ve worked on rounding out lazy sequences, adding more mutability, better meta support, and some big project updates. Shout-out to <a href="https://www.clojuriststogether.org/">Clojurists Together</a>, who are funding my work this quarter.</p>jank development update - Lazy sequences!2024-04-27T00:00:00Z2024-04-27T00:00:00Zhttps://jank-lang.org/blog/2024-04-27-lazy-sequencesJeaye Wilkerson<p>This quarter, I&apos;m being funded by <a href="https://www.clojuriststogether.org/">Clojurists Together</a> to build out jank&apos;s lazy sequences, special <code>loop*</code> form, destructuring, and support for the <code>for</code> and <code>doseq</code> macros. Going into this quarter, I had only a rough idea of how Clojure&apos;s lazy sequences were implemented. Now, a month in, I&apos;m ready to report some impressive progress!</p>jank development update - Syntax quoting!2024-03-29T00:00:00Z2024-03-29T00:00:00Zhttps://jank-lang.org/blog/2024-03-29-syntax-quotingJeaye Wilkerson<p>Oh, hey folks. I was just wrapping up this macro I was writing. One moment.</p>jank development update - Dynamic bindings and more!2024-02-23T00:00:00Z2024-02-23T00:00:00Zhttps://jank-lang.org/blog/2024-02-23-bindingsJeaye Wilkerson<p>For the past couple of months, I have been focused on tackling dynamic var bindings and meta hints, which grew into much, much more. Along the way, I&apos;ve learned some neat things and have positioned jank to be ready for a lot more outside contributions. Grab a seat and I&apos;ll explain it all! Much love to <a href="https://www.clojuriststogether.org/">Clojurists Together</a>, who have sponsored some of my work this quarter.</p>jank's new persistent string is fast2023-12-30T00:00:00Z2023-12-30T00:00:00Zhttps://jank-lang.org/blog/2023-12-30-fast-stringJeaye Wilkerson<p>One thing I&apos;ve been meaning to do is build a custom string class for jank. I had some time, during the holidays, between wrapping up this quarter&apos;s work and starting on next quarter&apos;s, so I decided to see if I could beat both <code>std::string</code> and <code>folly::fbstring</code>, in terms of performance. After all, if we&apos;re gonna make a string class, it&apos;ll need to be fast. :)</p>jank development update - Load all the modules!2023-12-17T00:00:00Z2023-12-17T00:00:00Zhttps://jank-lang.org/blog/2023-12-17-module-loadingJeaye Wilkerson<p>I&apos;ve been quiet for the past couple of months, finishing up this work on jank&apos;s module loading, class path handling, aliasing, and var referring. Along the way, I ran into some very interesting bugs and we&apos;re in for a treat of technical detail in this holiday edition of jank development updates! A warm shout out to my <a href="https://github.com/sponsors/jeaye">Github sponsors</a> and <a href="https://www.clojuriststogether.org/">Clojurists Together</a> for sponsoring this work.</p>jank development update - Module loading2023-10-14T00:00:00Z2023-10-14T00:00:00Zhttps://jank-lang.org/blog/2023-10-14-module-loadingJeaye Wilkerson<p>For the past month and a half, I&apos;ve been building out jank&apos;s support for <code>clojure.core/require</code>, including everything from class path handling to compiling jank files to intermediate code written to the filesystem. This is a half-way report for the quarter. As a warm note, my work on jank this quarter is being sponsored by <a href="https://www.clojuriststogether.org/">Clojurists Together</a>.</p>jank development update - Object model results2023-08-26T00:00:00Z2023-08-26T00:00:00Zhttps://jank-lang.org/blog/2023-08-26-object-modelJeaye Wilkerson<p>As summer draws to a close, in the Pacific Northwest, so too does my term of sponsored work focused on a faster object model for jank. Thanks so much to <a href="https://www.clojuriststogether.org/">Clojurists Together</a> for funding jank&apos;s development. The past quarter has been quite successful and I&apos;m excited to share the results.</p>jank development update - A faster object model2023-07-08T00:00:00Z2023-07-08T00:00:00Zhttps://jank-lang.org/blog/2023-07-08-object-modelJeaye Wilkerson<p>This quarter, my work on jank is being sponsored by <a href="https://www.clojuriststogether.org/">Clojurists Together</a>. The terms of the work are to research a new object model for jank, with the goal of making jank code faster across the board. This is a half-way report and I&apos;m excited to share my results!</p>jank development update - Optimizing a ray tracer2023-04-07T00:00:00Z2023-04-07T00:00:00Zhttps://jank-lang.org/blog/2023-04-07-ray-tracingJeaye Wilkerson<p>After the <a href="/blog/2023-01-13-optimizing-sequences">last post</a>, which focused on optimizing jank&apos;s sequences, I wanted to get jank running a ray tracer I had previously written in Clojure. In this post, I document what was required to start ray tracing in jank and, more importantly, how I chased down the run time in a fierce battle with Clojure&apos;s performance.</p>jank development update - Optimizing sequences2023-01-13T00:00:00Z2023-01-13T00:00:00Zhttps://jank-lang.org/blog/2023-01-13-optimizing-sequencesJeaye Wilkerson<p>In this episode of jank&apos;s development updates, we follow an exciting few weekends as I was digging deep into Clojure&apos;s sequence implementation, building jank&apos;s equivalent, and then benchmarking and profiling in a dizzying race to the bottom.</p>jank development update - Lots of new changes2022-12-08T00:00:00Z2022-12-08T00:00:00Zhttps://jank-lang.org/blog/2022-12-08-progress-updateJeaye Wilkerson<p>I was previously giving updates only in the <a href="https://clojurians.slack.com/archives/C03SRH97FDK">#jank</a> Slack channel, but some of these are getting large enough to warrant more prose. Thus, happily, I can announce that jank has a new blog and I have a <i>lot</i> of new progress to report! Let&apos;s get into the details.</p> \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index d972d19..b73fc73 100644 --- a/blog/index.html +++ b/blog/index.html @@ -1 +1 @@ -jank - blog

This quarter, I'm being funded by Clojurists Together to build out jank's lazy sequences, special loop* form, destructuring, and support for the for and doseq macros. Going into this quarter, I had only a rough idea of how Clojure's lazy sequences were implemented. Now, a month in, I'm ready to report some impressive progress!

Oh, hey folks. I was just wrapping up this macro I was writing. One moment.

For the past couple of months, I have been focused on tackling dynamic var bindings and meta hints, which grew into much, much more. Along the way, I've learned some neat things and have positioned jank to be ready for a lot more outside contributions. Grab a seat and I'll explain it all! Much love to Clojurists Together, who have sponsored some of my work this quarter.

One thing I've been meaning to do is build a custom string class for jank. I had some time, during the holidays, between wrapping up this quarter's work and starting on next quarter's, so I decided to see if I could beat both std::string and folly::fbstring, in terms of performance. After all, if we're gonna make a string class, it'll need to be fast. :)

I've been quiet for the past couple of months, finishing up this work on jank's module loading, class path handling, aliasing, and var referring. Along the way, I ran into some very interesting bugs and we're in for a treat of technical detail in this holiday edition of jank development updates! A warm shout out to my Github sponsors and Clojurists Together for sponsoring this work.

For the past month and a half, I've been building out jank's support for clojure.core/require, including everything from class path handling to compiling jank files to intermediate code written to the filesystem. This is a half-way report for the quarter. As a warm note, my work on jank this quarter is being sponsored by Clojurists Together.

As summer draws to a close, in the Pacific Northwest, so too does my term of sponsored work focused on a faster object model for jank. Thanks so much to Clojurists Together for funding jank's development. The past quarter has been quite successful and I'm excited to share the results.

This quarter, my work on jank is being sponsored by Clojurists Together. The terms of the work are to research a new object model for jank, with the goal of making jank code faster across the board. This is a half-way report and I'm excited to share my results!

After the last post, which focused on optimizing jank's sequences, I wanted to get jank running a ray tracer I had previously written in Clojure. In this post, I document what was required to start ray tracing in jank and, more importantly, how I chased down the run time in a fierce battle with Clojure's performance.

In this episode of jank's development updates, we follow an exciting few weekends as I was digging deep into Clojure's sequence implementation, building jank's equivalent, and then benchmarking and profiling in a dizzying race to the bottom.

I was previously giving updates only in the #jank Slack channel, but some of these are getting large enough to warrant more prose. Thus, happily, I can announce that jank has a new blog and I have a lot of new progress to report! Let's get into the details.

\ No newline at end of file +jank - blog

Hey folks! I've been building on last month's addition of lazy sequences, loop*, destructuring, and more. This month, I've worked on rounding out lazy sequences, adding more mutability, better meta support, and some big project updates. Shout-out to Clojurists Together, who are funding my work this quarter.

This quarter, I'm being funded by Clojurists Together to build out jank's lazy sequences, special loop* form, destructuring, and support for the for and doseq macros. Going into this quarter, I had only a rough idea of how Clojure's lazy sequences were implemented. Now, a month in, I'm ready to report some impressive progress!

Oh, hey folks. I was just wrapping up this macro I was writing. One moment.

For the past couple of months, I have been focused on tackling dynamic var bindings and meta hints, which grew into much, much more. Along the way, I've learned some neat things and have positioned jank to be ready for a lot more outside contributions. Grab a seat and I'll explain it all! Much love to Clojurists Together, who have sponsored some of my work this quarter.

One thing I've been meaning to do is build a custom string class for jank. I had some time, during the holidays, between wrapping up this quarter's work and starting on next quarter's, so I decided to see if I could beat both std::string and folly::fbstring, in terms of performance. After all, if we're gonna make a string class, it'll need to be fast. :)

I've been quiet for the past couple of months, finishing up this work on jank's module loading, class path handling, aliasing, and var referring. Along the way, I ran into some very interesting bugs and we're in for a treat of technical detail in this holiday edition of jank development updates! A warm shout out to my Github sponsors and Clojurists Together for sponsoring this work.

For the past month and a half, I've been building out jank's support for clojure.core/require, including everything from class path handling to compiling jank files to intermediate code written to the filesystem. This is a half-way report for the quarter. As a warm note, my work on jank this quarter is being sponsored by Clojurists Together.

As summer draws to a close, in the Pacific Northwest, so too does my term of sponsored work focused on a faster object model for jank. Thanks so much to Clojurists Together for funding jank's development. The past quarter has been quite successful and I'm excited to share the results.

This quarter, my work on jank is being sponsored by Clojurists Together. The terms of the work are to research a new object model for jank, with the goal of making jank code faster across the board. This is a half-way report and I'm excited to share my results!

After the last post, which focused on optimizing jank's sequences, I wanted to get jank running a ray tracer I had previously written in Clojure. In this post, I document what was required to start ray tracing in jank and, more importantly, how I chased down the run time in a fierce battle with Clojure's performance.

In this episode of jank's development updates, we follow an exciting few weekends as I was digging deep into Clojure's sequence implementation, building jank's equivalent, and then benchmarking and profiling in a dizzying race to the bottom.

I was previously giving updates only in the #jank Slack channel, but some of these are getting large enough to warrant more prose. Thus, happily, I can announce that jank has a new blog and I have a lot of new progress to report! Let's get into the details.

\ No newline at end of file diff --git a/progress/index.html b/progress/index.html index ce0fc29..2906b88 100644 --- a/progress/index.html +++ b/progress/index.html @@ -1 +1 @@ -jank programming language - Clojure/LLVM/Gradual Typing
jank is under heavy development. It's safest to assume that any feature advertised is partially developed or in the planning stages. There is no sales pitch here; just a lot of work and some big plans. All development happens on Github, so watch the repo there!
Feature
commentslexparse
nillexparseanalyzeeval
integerslexparseanalyzeeval
realslexparseanalyzeeval
boolslexparseanalyzeeval
charslexparseanalyzeeval
stringslexparseanalyzeeval
keywords/unqualifiedlexparseanalyzeeval
keywords/qualifiedlexparseanalyzeeval
keywords/auto-resolved-unqualifiedlexparseanalyzeeval
keywords/auto-resolved-qualifiedlexparseanalyzeeval
keyword argument mapsparse
mapslexparseanalyzeeval
vectorslexparseanalyzeeval
setslexparseanalyzeeval
listslexparseanalyzeeval
symbolslexparseanalyzeeval
ratioslexparseanalyzeeval
specials/deflexparseanalyzeeval
specials/iflexparseanalyzeeval
specials/dolexparseanalyzeeval
specials/let*lexparseanalyzeeval
specials/quotelexparseanalyzeeval
specials/varlexparseanalyzeeval
specials/fn*/baselexparseanalyzeeval
specials/fn*/aritieslexparseanalyzeeval
specials/fn*/variadiclexparseanalyzeeval
specials/fn*/recurlexparseanalyzeeval
specials/loop*lexparseanalyzeeval
specials/loop*/recurlexparseanalyzeeval
specials/throwlexparseanalyzeeval
specials/trylexparseanalyzeeval
specials/monitor-enterna
specials/monitor-exitna
bindings/thread-localdone
bindings/conveyancedone
callslexparseanalyzeeval
destructuringlexparseanalyzeeval
macroslexparseanalyzeeval
macros/&env parampassset
syntax-quotinglexparse
syntax-quoting/unquotelexparse
meta hintslexparse
reader macros/commentlexparse
reader macros/setlexparse
reader macros/shorthand fnslexparse
reader-macros/regexlexparse
reader-macros/dereflexparse
reader-macros/quotelexparse
reader-macros/var quotinglexparse
reader-macros/conditionallexparse
Feature
*done
*'done
*1done
*2done
*3done
*agent*done
*allow-unresolved-vars*done
*assert*done
*clojure-version*done
*command-line-args*done
*compile-files*done
*compile-path*done
*compiler-options*done
*data-readers*done
*default-data-reader-fn*done
*edone
*err*done
*file*done
*flush-on-newline*done
*fn-loader*done
*in*done
*math-context*done
*ns*done
*out*done
*print-dup*done
*print-length*done
*print-level*done
*print-meta*done
*print-namespace-maps*done
*print-readably*done
*read-eval*done
*reader-resolver*done
*source-path*done
*suppress-read*done
*unchecked-math*done
*verbose-defrecords*done
+done
+'done
-done
-'done
->done
->>done
/done
<done
<=done
=done
==done
>done
>=done
Instdone
NaN?done
accessor
aclonedone
add-classpathdone
add-tapdone
add-watchdone
agentdone
agent-errordone
agent-errorsdone
agetdone
alengthdone
aliasdone
all-nsdone
alterdone
alter-meta!done
alter-var-rootdone
amapdone
ancestorsdone
anddone
any?done
applydone
areducedone
array-mapdone
as->done
asetdone
aset-booleandone
aset-bytedone
aset-chardone
aset-doubledone
aset-floatdone
aset-intdone
aset-longdone
aset-shortdone
assertdone
assocdone
assoc!done
assoc-indone
associative?done
atomdone
awaitdone
await-fordone
await1done
basesdone
beandone
bigdecdone
bigintdone
bigintegerdone
bindingdone
bit-anddone
bit-and-notdone
bit-cleardone
bit-flipdone
bit-notdone
bit-ordone
bit-setdone
bit-shift-leftdone
bit-shift-rightdone
bit-testdone
bit-xordone
booleandone
boolean-arraydone
boolean?done
booleansdone
bound-fndone
bound-fn*done
bound?done
bounded-countdone
butlastdone
bytedone
byte-arraydone
bytesdone
bytes?done
casedone
castdone
catdone
chardone
char-arraydone
char-escape-stringdone
char-name-stringdone
char?done
charsdone
chunkdone
chunk-appenddone
chunk-bufferdone
chunk-consdone
chunk-firstdone
chunk-nextdone
chunk-restdone
chunked-seq?done
classdone
class?done
clear-agent-errorsdone
clojure-versiondone
coll?done
commentdone
commutedone
compdone
comparatordone
comparedone
compare-and-set!done
compiledone
complementdone
completingdone
concatdone
conddone
cond->done
cond->>done
condpdone
conjdone
conj!done
consdone
constantlydone
construct-proxydone
contains?done
countdone
counted?done
create-nsdone
create-struct
cycledone
decdone
dec'done
decimal?done
declaredone
dedupedone
default-data-readersdone
definlinedone
definterfacedone
defmacrodone
defmethoddone
defmultidone
defndone
defn-done
defoncedone
defprotocoldone
defrecorddone
defstruct
deftypedone
delaydone
delay?done
deliverdone
denominatordone
derefdone
derivedone
descendantsdone
destructuredone
disjdone
disj!done
dissocdone
dissoc!done
distinctdone
distinct?done
doalldone
dorundone
doseqdone
dosyncdone
dotimesdone
dotodone
doubledone
double-arraydone
double?done
doublesdone
dropdone
drop-lastdone
drop-whiledone
eductiondone
emptydone
empty?done
ensuredone
ensure-reduceddone
enumeration-seqdone
error-handlerdone
error-modedone
evaldone
even?done
every-preddone
every?done
ex-causedone
ex-datadone
ex-infodone
ex-messagedone
extenddone
extend-protocoldone
extend-typedone
extendersdone
extends?done
false?done
ffirstdone
file-seqdone
filterdone
filtervdone
finddone
find-keyworddone
find-nsdone
find-protocol-impldone
find-protocol-methoddone
find-vardone
firstdone
flattendone
floatdone
float-arraydone
float?done
floatsdone
flushdone
fndone
fn?done
fnextdone
fnildone
fordone
forcedone
formatdone
frequenciesdone
futuredone
future-calldone
future-canceldone
future-cancelled?done
future-done?done
future?done
gen-class
gen-interface
gensymdone
getdone
get-indone
get-methoddone
get-proxy-classdone
get-thread-bindingsdone
get-validatordone
group-bydone
halt-whendone
hashdone
hash-combinedone
hash-mapdone
hash-ordered-colldone
hash-setdone
hash-unordered-colldone
ident?done
identical?done
identitydone
if-letdone
if-notdone
if-somedone
ifn?done
importdone
in-nsdone
incdone
inc'done
indexed?done
infinite?done
init-proxydone
inst-msdone
inst-ms*done
inst?done
instance?done
intdone
int-arraydone
int?done
integer?done
interleavedone
interndone
interposedone
intodone
into-arraydone
intsdone
io!done
isa?done
iteratedone
iterationdone
iterator-seqdone
juxtdone
keepdone
keep-indexeddone
keydone
keysdone
keyworddone
keyword?done
lastdone
lazy-catdone
lazy-seqdone
letdone
letfndone
line-seqdone
listdone
list*done
list?done
loaddone
load-filedone
load-readerdone
load-stringdone
loaded-libsdone
lockingdone
longdone
long-arraydone
longsdone
loopdone
macroexpanddone
macroexpand-1done
make-arraydone
make-hierarchydone
mapdone
map-entry?done
map-indexeddone
map?done
mapcatdone
mapvdone
maxdone
max-keydone
memfndone
memoizedone
mergedone
merge-withdone
metadone
method-sigdone
methodsdone
mindone
min-keydone
mix-collection-hashdone
moddone
mungedone
namedone
namespacedone
namespace-mungedone
nat-int?done
neg-int?done
neg?done
newlinedone
nextdone
nfirstdone
nil?done
nnextdone
notdone
not-any?done
not-emptydone
not-every?done
not=done
nsdone
ns-aliasesdone
ns-importsdone
ns-internsdone
ns-mapdone
ns-namedone
ns-publicsdone
ns-refersdone
ns-resolvedone
ns-unaliasdone
ns-unmapdone
nthdone
nthnextdone
nthrestdone
numdone
number?done
numeratordone
object-arraydone
odd?done
ordone
parentsdone
parse-booleandone
parse-doubledone
parse-longdone
parse-uuiddone
partialdone
partitiondone
partition-alldone
partition-bydone
pcallsdone
peekdone
persistent!done
pmapdone
popdone
pop!done
pop-thread-bindingsdone
pos-int?done
pos?done
prdone
pr-strdone
prefer-methoddone
prefersdone
primitives-classnamesdone
printdone
print-ctordone
print-dupdone
print-methoddone
print-simpledone
print-strdone
printfdone
printlndone
println-strdone
prndone
prn-strdone
promisedone
proxydone
proxy-call-with-superdone
proxy-mappingsdone
proxy-namedone
proxy-superdone
push-thread-bindingsdone
pvaluesdone
qualified-ident?done
qualified-keyword?done
qualified-symbol?done
quotdone
randdone
rand-intdone
rand-nthdone
random-sampledone
random-uuiddone
rangedone
ratio?done
rational?done
rationalizedone
re-finddone
re-groupsdone
re-matcherdone
re-matchesdone
re-patterndone
re-seqdone
readdone
read+stringdone
read-linedone
read-stringdone
reader-conditionaldone
reader-conditional?done
realized?done
record?done
reducedone
reduce-kvdone
reduceddone
reduced?done
reductionsdone
refdone
ref-history-countdone
ref-max-historydone
ref-min-historydone
ref-setdone
referdone
refer-clojuredone
reifydone
release-pending-sendsdone
remdone
removedone
remove-all-methodsdone
remove-methoddone
remove-nsdone
remove-tapdone
remove-watchdone
repeatdone
repeatedlydone
replacedone
replicatedone
requiredone
requiring-resolvedone
reset!done
reset-meta!done
reset-vals!done
resolvedone
restdone
restart-agentdone
resultset-seqdone
reversedone
reversible?done
rseqdone
rsubseqdone
run!done
satisfies?
seconddone
select-keysdone
senddone
send-offdone
send-viadone
seqdone
seq-to-map-for-destructuringdone
seq?done
seqable?done
sequedone
sequencedone
sequential?done
setdone
set-agent-send-executor!done
set-agent-send-off-executor!done
set-error-handler!done
set-error-mode!done
set-validator!done
set?done
shortdone
short-arraydone
shortsdone
shuffledone
shutdown-agentsdone
simple-ident?done
simple-keyword?done
simple-symbol?done
slurpdone
somedone
some->done
some->>done
some-fndone
some?done
sortdone
sort-bydone
sorted-mapdone
sorted-map-bydone
sorted-setdone
sorted-set-bydone
sorted?done
special-symbol?done
spitdone
split-atdone
split-withdone
strdone
string?done
struct
struct-map
subsdone
subseqdone
subvecdone
supersdone
swap!done
swap-vals!done
symboldone
symbol?done
syncdone
tagged-literaldone
tagged-literal?done
takedone
take-lastdone
take-nthdone
take-whiledone
tap>done
testdone
the-nsdone
thread-bound?done
timedone
to-arraydone
to-array-2ddone
trampolinedone
transducedone
transientdone
tree-seqdone
true?done
typedone
unchecked-adddone
unchecked-add-intdone
unchecked-bytedone
unchecked-chardone
unchecked-decdone
unchecked-dec-intdone
unchecked-divide-intdone
unchecked-doubledone
unchecked-floatdone
unchecked-incdone
unchecked-inc-intdone
unchecked-intdone
unchecked-longdone
unchecked-multiplydone
unchecked-multiply-intdone
unchecked-negatedone
unchecked-negate-intdone
unchecked-remainder-intdone
unchecked-shortdone
unchecked-subtractdone
unchecked-subtract-intdone
underivedone
unquotedone
unquote-splicingdone
unreduceddone
unsigned-bit-shift-rightdone
updatedone
update-indone
update-keysdone
update-proxydone
update-valsdone
uri?done
usedone
uuid?done
valdone
valsdone
var-getdone
var-setdone
var?done
vary-metadone
vecdone
vectordone
vector-ofdone
vector?done
volatile!done
volatile?done
vreset!done
vswap!done
whendone
when-firstdone
when-letdone
when-notdone
when-somedone
whiledone
with-bindingsdone
with-bindings*done
with-in-strdone
with-loading-contextdone
with-local-varsdone
with-metadone
with-opendone
with-out-strdone
with-precisiondone
with-redefsdone
with-redefs-fndone
xml-seqdone
zero?done
zipmapdone
Feature
*tested
*'tested
*1tested
*2tested
*3tested
*agent*tested
*allow-unresolved-vars*tested
*assert*tested
*clojure-version*tested
*command-line-args*tested
*compile-files*tested
*compile-path*tested
*compiler-options*tested
*data-readers*tested
*default-data-reader-fn*tested
*etested
*err*tested
*file*tested
*flush-on-newline*tested
*fn-loader*tested
*in*tested
*math-context*tested
*ns*tested
*out*tested
*print-dup*tested
*print-length*tested
*print-level*tested
*print-meta*tested
*print-namespace-maps*tested
*print-readably*tested
*read-eval*tested
*reader-resolver*tested
*source-path*tested
*suppress-read*tested
*unchecked-math*tested
*verbose-defrecords*tested
+tested
+'tested
-tested
-'tested
->tested
->>tested
/tested
<tested
<=tested
=tested
==tested
>tested
>=tested
Insttested
NaN?tested
accessor
aclonetested
add-classpathtested
add-taptested
add-watchtested
agenttested
agent-errortested
agent-errorstested
agettested
alengthtested
aliastested
all-nstested
altertested
alter-meta!tested
alter-var-roottested
amaptested
ancestorstested
andtested
any?tested
applytested
areducetested
array-maptested
as->tested
asettested
aset-booleantested
aset-bytetested
aset-chartested
aset-doubletested
aset-floattested
aset-inttested
aset-longtested
aset-shorttested
asserttested
assoctested
assoc!tested
assoc-intested
associative?tested
atomtested
awaittested
await-fortested
await1tested
basestested
beantested
bigdectested
biginttested
bigintegertested
bindingtested
bit-andtested
bit-and-nottested
bit-cleartested
bit-fliptested
bit-nottested
bit-ortested
bit-settested
bit-shift-lefttested
bit-shift-righttested
bit-testtested
bit-xortested
booleantested
boolean-arraytested
boolean?tested
booleanstested
bound-fntested
bound-fn*tested
bound?tested
bounded-counttested
butlasttested
bytetested
byte-arraytested
bytestested
bytes?tested
casetested
casttested
cattested
chartested
char-arraytested
char-escape-stringtested
char-name-stringtested
char?tested
charstested
chunktested
chunk-appendtested
chunk-buffertested
chunk-constested
chunk-firsttested
chunk-nexttested
chunk-resttested
chunked-seq?tested
classtested
class?tested
clear-agent-errorstested
clojure-versiontested
coll?tested
commenttested
commutetested
comptested
comparatortested
comparetested
compare-and-set!tested
compiletested
complementtested
completingtested
concattested
condtested
cond->tested
cond->>tested
condptested
conjtested
conj!tested
constested
constantlytested
construct-proxytested
contains?tested
counttested
counted?tested
create-nstested
create-struct
cycletested
dectested
dec'tested
decimal?tested
declaretested
dedupetested
default-data-readerstested
definlinetested
definterfacetested
defmacrotested
defmethodtested
defmultitested
defntested
defn-tested
defoncetested
defprotocoltested
defrecordtested
defstruct
deftypetested
delaytested
delay?tested
delivertested
denominatortested
dereftested
derivetested
descendantstested
destructuretested
disjtested
disj!tested
dissoctested
dissoc!tested
distincttested
distinct?tested
doalltested
doruntested
doseqtested
dosynctested
dotimestested
dototested
doubletested
double-arraytested
double?tested
doublestested
droptested
drop-lasttested
drop-whiletested
eductiontested
emptytested
empty?tested
ensuretested
ensure-reducedtested
enumeration-seqtested
error-handlertested
error-modetested
evaltested
even?tested
every-predtested
every?tested
ex-causetested
ex-datatested
ex-infotested
ex-messagetested
extendtested
extend-protocoltested
extend-typetested
extenderstested
extends?tested
false?tested
ffirsttested
file-seqtested
filtertested
filtervtested
findtested
find-keywordtested
find-nstested
find-protocol-impltested
find-protocol-methodtested
find-vartested
firsttested
flattentested
floattested
float-arraytested
float?tested
floatstested
flushtested
fntested
fn?tested
fnexttested
fniltested
fortested
forcetested
formattested
frequenciestested
futuretested
future-calltested
future-canceltested
future-cancelled?tested
future-done?tested
future?tested
gen-class
gen-interface
gensymtested
gettested
get-intested
get-methodtested
get-proxy-classtested
get-thread-bindingstested
get-validatortested
group-bytested
halt-whentested
hashtested
hash-combinetested
hash-maptested
hash-ordered-colltested
hash-settested
hash-unordered-colltested
ident?tested
identical?tested
identitytested
if-lettested
if-nottested
if-sometested
ifn?tested
importtested
in-nstested
inctested
inc'tested
indexed?tested
infinite?tested
init-proxytested
inst-mstested
inst-ms*tested
inst?tested
instance?tested
inttested
int-arraytested
int?tested
integer?tested
interleavetested
interntested
interposetested
intotested
into-arraytested
intstested
io!tested
isa?tested
iteratetested
iterationtested
iterator-seqtested
juxttested
keeptested
keep-indexedtested
keytested
keystested
keywordtested
keyword?tested
lasttested
lazy-cattested
lazy-seqtested
lettested
letfntested
line-seqtested
listtested
list*tested
list?tested
loadtested
load-filetested
load-readertested
load-stringtested
loaded-libstested
lockingtested
longtested
long-arraytested
longstested
looptested
macroexpandtested
macroexpand-1tested
make-arraytested
make-hierarchytested
maptested
map-entry?tested
map-indexedtested
map?tested
mapcattested
mapvtested
maxtested
max-keytested
memfntested
memoizetested
mergetested
merge-withtested
metatested
method-sigtested
methodstested
mintested
min-keytested
mix-collection-hashtested
modtested
mungetested
nametested
namespacetested
namespace-mungetested
nat-int?tested
neg-int?tested
neg?tested
newlinetested
nexttested
nfirsttested
nil?tested
nnexttested
nottested
not-any?tested
not-emptytested
not-every?tested
not=tested
nstested
ns-aliasestested
ns-importstested
ns-internstested
ns-maptested
ns-nametested
ns-publicstested
ns-referstested
ns-resolvetested
ns-unaliastested
ns-unmaptested
nthtested
nthnexttested
nthresttested
numtested
number?tested
numeratortested
object-arraytested
odd?tested
ortested
parentstested
parse-booleantested
parse-doubletested
parse-longtested
parse-uuidtested
partialtested
partitiontested
partition-alltested
partition-bytested
pcallstested
peektested
persistent!tested
pmaptested
poptested
pop!tested
pop-thread-bindingstested
pos-int?tested
pos?tested
prtested
pr-strtested
prefer-methodtested
preferstested
primitives-classnamestested
printtested
print-ctortested
print-duptested
print-methodtested
print-simpletested
print-strtested
printftested
printlntested
println-strtested
prntested
prn-strtested
promisetested
proxytested
proxy-call-with-supertested
proxy-mappingstested
proxy-nametested
proxy-supertested
push-thread-bindingstested
pvaluestested
qualified-ident?tested
qualified-keyword?tested
qualified-symbol?tested
quottested
randtested
rand-inttested
rand-nthtested
random-sampletested
random-uuidtested
rangetested
ratio?tested
rational?tested
rationalizetested
re-findtested
re-groupstested
re-matchertested
re-matchestested
re-patterntested
re-seqtested
readtested
read+stringtested
read-linetested
read-stringtested
reader-conditionaltested
reader-conditional?tested
realized?tested
record?tested
reducetested
reduce-kvtested
reducedtested
reduced?tested
reductionstested
reftested
ref-history-counttested
ref-max-historytested
ref-min-historytested
ref-settested
refertested
refer-clojuretested
reifytested
release-pending-sendstested
remtested
removetested
remove-all-methodstested
remove-methodtested
remove-nstested
remove-taptested
remove-watchtested
repeattested
repeatedlytested
replacetested
replicatetested
requiretested
requiring-resolvetested
reset!tested
reset-meta!tested
reset-vals!tested
resolvetested
resttested
restart-agenttested
resultset-seqtested
reversetested
reversible?tested
rseqtested
rsubseqtested
run!tested
satisfies?
secondtested
select-keystested
sendtested
send-offtested
send-viatested
seqtested
seq-to-map-for-destructuringtested
seq?tested
seqable?tested
sequetested
sequencetested
sequential?tested
settested
set-agent-send-executor!tested
set-agent-send-off-executor!tested
set-error-handler!tested
set-error-mode!tested
set-validator!tested
set?tested
shorttested
short-arraytested
shortstested
shuffletested
shutdown-agentstested
simple-ident?tested
simple-keyword?tested
simple-symbol?tested
slurptested
sometested
some->tested
some->>tested
some-fntested
some?tested
sorttested
sort-bytested
sorted-maptested
sorted-map-bytested
sorted-settested
sorted-set-bytested
sorted?tested
special-symbol?tested
spittested
split-attested
split-withtested
strtested
string?tested
struct
struct-map
substested
subseqtested
subvectested
superstested
swap!tested
swap-vals!tested
symboltested
symbol?tested
synctested
tagged-literaltested
tagged-literal?tested
taketested
take-lasttested
take-nthtested
take-whiletested
tap>tested
testtested
the-nstested
thread-bound?tested
timetested
to-arraytested
to-array-2dtested
trampolinetested
transducetested
transienttested
tree-seqtested
true?tested
typetested
unchecked-addtested
unchecked-add-inttested
unchecked-bytetested
unchecked-chartested
unchecked-dectested
unchecked-dec-inttested
unchecked-divide-inttested
unchecked-doubletested
unchecked-floattested
unchecked-inctested
unchecked-inc-inttested
unchecked-inttested
unchecked-longtested
unchecked-multiplytested
unchecked-multiply-inttested
unchecked-negatetested
unchecked-negate-inttested
unchecked-remainder-inttested
unchecked-shorttested
unchecked-subtracttested
unchecked-subtract-inttested
underivetested
unquotetested
unquote-splicingtested
unreducedtested
unsigned-bit-shift-righttested
updatetested
update-intested
update-keystested
update-proxytested
update-valstested
uri?tested
usetested
uuid?tested
valtested
valstested
var-gettested
var-settested
var?tested
vary-metatested
vectested
vectortested
vector-oftested
vector?tested
volatile!tested
volatile?tested
vreset!tested
vswap!tested
whentested
when-firsttested
when-lettested
when-nottested
when-sometested
whiletested
with-bindingstested
with-bindings*tested
with-in-strtested
with-loading-contexttested
with-local-varstested
with-metatested
with-opentested
with-out-strtested
with-precisiontested
with-redefstested
with-redefs-fntested
xml-seqtested
zero?tested
zipmaptested
Feature
interop/include headersdone
interop/link librariesdone
interop/represent native objectsdone
interop/call native functionsdone
interop/explicitly box unbox native objectsdone
interop/refer to native globalsdone
interop/access native membersdone
interop/extract native value from jank objectdone
interop/convert native value to jank objectdone
interop/create native objectsdone
Feature
type annotationsdone
infer left hand typedone
infer right hand typedone
Feature
leiningen supportdone
nrepl supportdone
lsp serverdone
dap serverdone
\ No newline at end of file +jank programming language - Clojure/LLVM/Gradual Typing
jank is under heavy development. It's safest to assume that any feature advertised is partially developed or in the planning stages. There is no sales pitch here; just a lot of work and some big plans. All development happens on Github, so watch the repo there!
Feature
commentslexparse
nillexparseanalyzeeval
integerslexparseanalyzeeval
realslexparseanalyzeeval
boolslexparseanalyzeeval
charslexparseanalyzeeval
stringslexparseanalyzeeval
keywords/unqualifiedlexparseanalyzeeval
keywords/qualifiedlexparseanalyzeeval
keywords/auto-resolved-unqualifiedlexparseanalyzeeval
keywords/auto-resolved-qualifiedlexparseanalyzeeval
keyword argument mapsparse
mapslexparseanalyzeeval
vectorslexparseanalyzeeval
setslexparseanalyzeeval
listslexparseanalyzeeval
symbolslexparseanalyzeeval
ratioslexparseanalyzeeval
specials/deflexparseanalyzeeval
specials/iflexparseanalyzeeval
specials/dolexparseanalyzeeval
specials/let*lexparseanalyzeeval
specials/quotelexparseanalyzeeval
specials/varlexparseanalyzeeval
specials/fn*/baselexparseanalyzeeval
specials/fn*/aritieslexparseanalyzeeval
specials/fn*/variadiclexparseanalyzeeval
specials/fn*/recurlexparseanalyzeeval
specials/loop*lexparseanalyzeeval
specials/loop*/recurlexparseanalyzeeval
specials/throwlexparseanalyzeeval
specials/trylexparseanalyzeeval
specials/monitor-enterna
specials/monitor-exitna
bindings/thread-localdone
bindings/conveyancedone
callslexparseanalyzeeval
destructuringlexparseanalyzeeval
macroslexparseanalyzeeval
macros/&env parampassset
syntax-quotinglexparse
syntax-quoting/unquotelexparse
meta hintslexparse
reader macros/commentlexparse
reader macros/setlexparse
reader macros/shorthand fnslexparse
reader-macros/regexlexparse
reader-macros/dereflexparse
reader-macros/quotelexparse
reader-macros/var quotinglexparse
reader-macros/conditionallexparse
Feature
*done
*'done
*1done
*2done
*3done
*agent*done
*allow-unresolved-vars*done
*assert*done
*clojure-version*done
*command-line-args*done
*compile-files*done
*compile-path*done
*compiler-options*done
*data-readers*done
*default-data-reader-fn*done
*edone
*err*done
*file*done
*flush-on-newline*done
*fn-loader*done
*in*done
*math-context*done
*ns*done
*out*done
*print-dup*done
*print-length*done
*print-level*done
*print-meta*done
*print-namespace-maps*done
*print-readably*done
*read-eval*done
*reader-resolver*done
*source-path*done
*suppress-read*done
*unchecked-math*done
*verbose-defrecords*done
+done
+'done
-done
-'done
->done
->>done
/done
<done
<=done
=done
==done
>done
>=done
Instdone
NaN?done
accessor
aclonedone
add-classpathdone
add-tapdone
add-watchdone
agentdone
agent-errordone
agent-errorsdone
agetdone
alengthdone
aliasdone
all-nsdone
alterdone
alter-meta!done
alter-var-rootdone
amapdone
ancestorsdone
anddone
any?done
applydone
areducedone
array-mapdone
as->done
asetdone
aset-booleandone
aset-bytedone
aset-chardone
aset-doubledone
aset-floatdone
aset-intdone
aset-longdone
aset-shortdone
assertdone
assocdone
assoc!done
assoc-indone
associative?done
atomdone
awaitdone
await-fordone
await1done
basesdone
beandone
bigdecdone
bigintdone
bigintegerdone
bindingdone
bit-anddone
bit-and-notdone
bit-cleardone
bit-flipdone
bit-notdone
bit-ordone
bit-setdone
bit-shift-leftdone
bit-shift-rightdone
bit-testdone
bit-xordone
booleandone
boolean-arraydone
boolean?done
booleansdone
bound-fndone
bound-fn*done
bound?done
bounded-countdone
butlastdone
bytedone
byte-arraydone
bytesdone
bytes?done
casedone
castdone
catdone
chardone
char-arraydone
char-escape-stringdone
char-name-stringdone
char?done
charsdone
chunkdone
chunk-appenddone
chunk-bufferdone
chunk-consdone
chunk-firstdone
chunk-nextdone
chunk-restdone
chunked-seq?done
classdone
class?done
clear-agent-errorsdone
clojure-versiondone
coll?done
commentdone
commutedone
compdone
comparatordone
comparedone
compare-and-set!done
compiledone
complementdone
completingdone
concatdone
conddone
cond->done
cond->>done
condpdone
conjdone
conj!done
consdone
constantlydone
construct-proxydone
contains?done
countdone
counted?done
create-nsdone
create-struct
cycledone
decdone
dec'done
decimal?done
declaredone
dedupedone
default-data-readersdone
definlinedone
definterfacedone
defmacrodone
defmethoddone
defmultidone
defndone
defn-done
defoncedone
defprotocoldone
defrecorddone
defstruct
deftypedone
delaydone
delay?done
deliverdone
denominatordone
derefdone
derivedone
descendantsdone
destructuredone
disjdone
disj!done
dissocdone
dissoc!done
distinctdone
distinct?done
doalldone
dorundone
doseqdone
dosyncdone
dotimesdone
dotodone
doubledone
double-arraydone
double?done
doublesdone
dropdone
drop-lastdone
drop-whiledone
eductiondone
emptydone
empty?done
ensuredone
ensure-reduceddone
enumeration-seqdone
error-handlerdone
error-modedone
evaldone
even?done
every-preddone
every?done
ex-causedone
ex-datadone
ex-infodone
ex-messagedone
extenddone
extend-protocoldone
extend-typedone
extendersdone
extends?done
false?done
ffirstdone
file-seqdone
filterdone
filtervdone
finddone
find-keyworddone
find-nsdone
find-protocol-impldone
find-protocol-methoddone
find-vardone
firstdone
flattendone
floatdone
float-arraydone
float?done
floatsdone
flushdone
fndone
fn?done
fnextdone
fnildone
fordone
forcedone
formatdone
frequenciesdone
futuredone
future-calldone
future-canceldone
future-cancelled?done
future-done?done
future?done
gen-class
gen-interface
gensymdone
getdone
get-indone
get-methoddone
get-proxy-classdone
get-thread-bindingsdone
get-validatordone
group-bydone
halt-whendone
hashdone
hash-combinedone
hash-mapdone
hash-ordered-colldone
hash-setdone
hash-unordered-colldone
ident?done
identical?done
identitydone
if-letdone
if-notdone
if-somedone
ifn?done
importdone
in-nsdone
incdone
inc'done
indexed?done
infinite?done
init-proxydone
inst-msdone
inst-ms*done
inst?done
instance?done
intdone
int-arraydone
int?done
integer?done
interleavedone
interndone
interposedone
intodone
into-arraydone
intsdone
io!done
isa?done
iteratedone
iterationdone
iterator-seqdone
juxtdone
keepdone
keep-indexeddone
keydone
keysdone
keyworddone
keyword?done
lastdone
lazy-catdone
lazy-seqdone
letdone
letfndone
line-seqdone
listdone
list*done
list?done
loaddone
load-filedone
load-readerdone
load-stringdone
loaded-libsdone
lockingdone
longdone
long-arraydone
longsdone
loopdone
macroexpanddone
macroexpand-1done
make-arraydone
make-hierarchydone
mapdone
map-entry?done
map-indexeddone
map?done
mapcatdone
mapvdone
maxdone
max-keydone
memfndone
memoizedone
mergedone
merge-withdone
metadone
method-sigdone
methodsdone
mindone
min-keydone
mix-collection-hashdone
moddone
mungedone
namedone
namespacedone
namespace-mungedone
nat-int?done
neg-int?done
neg?done
newlinedone
nextdone
nfirstdone
nil?done
nnextdone
notdone
not-any?done
not-emptydone
not-every?done
not=done
nsdone
ns-aliasesdone
ns-importsdone
ns-internsdone
ns-mapdone
ns-namedone
ns-publicsdone
ns-refersdone
ns-resolvedone
ns-unaliasdone
ns-unmapdone
nthdone
nthnextdone
nthrestdone
numdone
number?done
numeratordone
object-arraydone
odd?done
ordone
parentsdone
parse-booleandone
parse-doubledone
parse-longdone
parse-uuiddone
partialdone
partitiondone
partition-alldone
partition-bydone
pcallsdone
peekdone
persistent!done
pmapdone
popdone
pop!done
pop-thread-bindingsdone
pos-int?done
pos?done
prdone
pr-strdone
prefer-methoddone
prefersdone
primitives-classnamesdone
printdone
print-ctordone
print-dupdone
print-methoddone
print-simpledone
print-strdone
printfdone
printlndone
println-strdone
prndone
prn-strdone
promisedone
proxydone
proxy-call-with-superdone
proxy-mappingsdone
proxy-namedone
proxy-superdone
push-thread-bindingsdone
pvaluesdone
qualified-ident?done
qualified-keyword?done
qualified-symbol?done
quotdone
randdone
rand-intdone
rand-nthdone
random-sampledone
random-uuiddone
rangedone
ratio?done
rational?done
rationalizedone
re-finddone
re-groupsdone
re-matcherdone
re-matchesdone
re-patterndone
re-seqdone
readdone
read+stringdone
read-linedone
read-stringdone
reader-conditionaldone
reader-conditional?done
realized?done
record?done
reducedone
reduce-kvdone
reduceddone
reduced?done
reductionsdone
refdone
ref-history-countdone
ref-max-historydone
ref-min-historydone
ref-setdone
referdone
refer-clojuredone
reifydone
release-pending-sendsdone
remdone
removedone
remove-all-methodsdone
remove-methoddone
remove-nsdone
remove-tapdone
remove-watchdone
repeatdone
repeatedlydone
replacedone
replicatedone
requiredone
requiring-resolvedone
reset!done
reset-meta!done
reset-vals!done
resolvedone
restdone
restart-agentdone
resultset-seqdone
reversedone
reversible?done
rseqdone
rsubseqdone
run!done
satisfies?
seconddone
select-keysdone
senddone
send-offdone
send-viadone
seqdone
seq-to-map-for-destructuringdone
seq?done
seqable?done
sequedone
sequencedone
sequential?done
setdone
set-agent-send-executor!done
set-agent-send-off-executor!done
set-error-handler!done
set-error-mode!done
set-validator!done
set?done
shortdone
short-arraydone
shortsdone
shuffledone
shutdown-agentsdone
simple-ident?done
simple-keyword?done
simple-symbol?done
slurpdone
somedone
some->done
some->>done
some-fndone
some?done
sortdone
sort-bydone
sorted-mapdone
sorted-map-bydone
sorted-setdone
sorted-set-bydone
sorted?done
special-symbol?done
spitdone
split-atdone
split-withdone
strdone
string?done
struct
struct-map
subsdone
subseqdone
subvecdone
supersdone
swap!done
swap-vals!done
symboldone
symbol?done
syncdone
tagged-literaldone
tagged-literal?done
takedone
take-lastdone
take-nthdone
take-whiledone
tap>done
testdone
the-nsdone
thread-bound?done
timedone
to-arraydone
to-array-2ddone
trampolinedone
transducedone
transientdone
tree-seqdone
true?done
typedone
unchecked-adddone
unchecked-add-intdone
unchecked-bytedone
unchecked-chardone
unchecked-decdone
unchecked-dec-intdone
unchecked-divide-intdone
unchecked-doubledone
unchecked-floatdone
unchecked-incdone
unchecked-inc-intdone
unchecked-intdone
unchecked-longdone
unchecked-multiplydone
unchecked-multiply-intdone
unchecked-negatedone
unchecked-negate-intdone
unchecked-remainder-intdone
unchecked-shortdone
unchecked-subtractdone
unchecked-subtract-intdone
underivedone
unquotedone
unquote-splicingdone
unreduceddone
unsigned-bit-shift-rightdone
updatedone
update-indone
update-keysdone
update-proxydone
update-valsdone
uri?done
usedone
uuid?done
valdone
valsdone
var-getdone
var-setdone
var?done
vary-metadone
vecdone
vectordone
vector-ofdone
vector?done
volatile!done
volatile?done
vreset!done
vswap!done
whendone
when-firstdone
when-letdone
when-notdone
when-somedone
whiledone
with-bindingsdone
with-bindings*done
with-in-strdone
with-loading-contextdone
with-local-varsdone
with-metadone
with-opendone
with-out-strdone
with-precisiondone
with-redefsdone
with-redefs-fndone
xml-seqdone
zero?done
zipmapdone
Feature
*tested
*'tested
*1tested
*2tested
*3tested
*agent*tested
*allow-unresolved-vars*tested
*assert*tested
*clojure-version*tested
*command-line-args*tested
*compile-files*tested
*compile-path*tested
*compiler-options*tested
*data-readers*tested
*default-data-reader-fn*tested
*etested
*err*tested
*file*tested
*flush-on-newline*tested
*fn-loader*tested
*in*tested
*math-context*tested
*ns*tested
*out*tested
*print-dup*tested
*print-length*tested
*print-level*tested
*print-meta*tested
*print-namespace-maps*tested
*print-readably*tested
*read-eval*tested
*reader-resolver*tested
*source-path*tested
*suppress-read*tested
*unchecked-math*tested
*verbose-defrecords*tested
+tested
+'tested
-tested
-'tested
->tested
->>tested
/tested
<tested
<=tested
=tested
==tested
>tested
>=tested
Insttested
NaN?tested
accessor
aclonetested
add-classpathtested
add-taptested
add-watchtested
agenttested
agent-errortested
agent-errorstested
agettested
alengthtested
aliastested
all-nstested
altertested
alter-meta!tested
alter-var-roottested
amaptested
ancestorstested
andtested
any?tested
applytested
areducetested
array-maptested
as->tested
asettested
aset-booleantested
aset-bytetested
aset-chartested
aset-doubletested
aset-floattested
aset-inttested
aset-longtested
aset-shorttested
asserttested
assoctested
assoc!tested
assoc-intested
associative?tested
atomtested
awaittested
await-fortested
await1tested
basestested
beantested
bigdectested
biginttested
bigintegertested
bindingtested
bit-andtested
bit-and-nottested
bit-cleartested
bit-fliptested
bit-nottested
bit-ortested
bit-settested
bit-shift-lefttested
bit-shift-righttested
bit-testtested
bit-xortested
booleantested
boolean-arraytested
boolean?tested
booleanstested
bound-fntested
bound-fn*tested
bound?tested
bounded-counttested
butlasttested
bytetested
byte-arraytested
bytestested
bytes?tested
casetested
casttested
cattested
chartested
char-arraytested
char-escape-stringtested
char-name-stringtested
char?tested
charstested
chunktested
chunk-appendtested
chunk-buffertested
chunk-constested
chunk-firsttested
chunk-nexttested
chunk-resttested
chunked-seq?tested
classtested
class?tested
clear-agent-errorstested
clojure-versiontested
coll?tested
commenttested
commutetested
comptested
comparatortested
comparetested
compare-and-set!tested
compiletested
complementtested
completingtested
concattested
condtested
cond->tested
cond->>tested
condptested
conjtested
conj!tested
constested
constantlytested
construct-proxytested
contains?tested
counttested
counted?tested
create-nstested
create-struct
cycletested
dectested
dec'tested
decimal?tested
declaretested
dedupetested
default-data-readerstested
definlinetested
definterfacetested
defmacrotested
defmethodtested
defmultitested
defntested
defn-tested
defoncetested
defprotocoltested
defrecordtested
defstruct
deftypetested
delaytested
delay?tested
delivertested
denominatortested
dereftested
derivetested
descendantstested
destructuretested
disjtested
disj!tested
dissoctested
dissoc!tested
distincttested
distinct?tested
doalltested
doruntested
doseqtested
dosynctested
dotimestested
dototested
doubletested
double-arraytested
double?tested
doublestested
droptested
drop-lasttested
drop-whiletested
eductiontested
emptytested
empty?tested
ensuretested
ensure-reducedtested
enumeration-seqtested
error-handlertested
error-modetested
evaltested
even?tested
every-predtested
every?tested
ex-causetested
ex-datatested
ex-infotested
ex-messagetested
extendtested
extend-protocoltested
extend-typetested
extenderstested
extends?tested
false?tested
ffirsttested
file-seqtested
filtertested
filtervtested
findtested
find-keywordtested
find-nstested
find-protocol-impltested
find-protocol-methodtested
find-vartested
firsttested
flattentested
floattested
float-arraytested
float?tested
floatstested
flushtested
fntested
fn?tested
fnexttested
fniltested
fortested
forcetested
formattested
frequenciestested
futuretested
future-calltested
future-canceltested
future-cancelled?tested
future-done?tested
future?tested
gen-class
gen-interface
gensymtested
gettested
get-intested
get-methodtested
get-proxy-classtested
get-thread-bindingstested
get-validatortested
group-bytested
halt-whentested
hashtested
hash-combinetested
hash-maptested
hash-ordered-colltested
hash-settested
hash-unordered-colltested
ident?tested
identical?tested
identitytested
if-lettested
if-nottested
if-sometested
ifn?tested
importtested
in-nstested
inctested
inc'tested
indexed?tested
infinite?tested
init-proxytested
inst-mstested
inst-ms*tested
inst?tested
instance?tested
inttested
int-arraytested
int?tested
integer?tested
interleavetested
interntested
interposetested
intotested
into-arraytested
intstested
io!tested
isa?tested
iteratetested
iterationtested
iterator-seqtested
juxttested
keeptested
keep-indexedtested
keytested
keystested
keywordtested
keyword?tested
lasttested
lazy-cattested
lazy-seqtested
lettested
letfntested
line-seqtested
listtested
list*tested
list?tested
loadtested
load-filetested
load-readertested
load-stringtested
loaded-libstested
lockingtested
longtested
long-arraytested
longstested
looptested
macroexpandtested
macroexpand-1tested
make-arraytested
make-hierarchytested
maptested
map-entry?tested
map-indexedtested
map?tested
mapcattested
mapvtested
maxtested
max-keytested
memfntested
memoizetested
mergetested
merge-withtested
metatested
method-sigtested
methodstested
mintested
min-keytested
mix-collection-hashtested
modtested
mungetested
nametested
namespacetested
namespace-mungetested
nat-int?tested
neg-int?tested
neg?tested
newlinetested
nexttested
nfirsttested
nil?tested
nnexttested
nottested
not-any?tested
not-emptytested
not-every?tested
not=tested
nstested
ns-aliasestested
ns-importstested
ns-internstested
ns-maptested
ns-nametested
ns-publicstested
ns-referstested
ns-resolvetested
ns-unaliastested
ns-unmaptested
nthtested
nthnexttested
nthresttested
numtested
number?tested
numeratortested
object-arraytested
odd?tested
ortested
parentstested
parse-booleantested
parse-doubletested
parse-longtested
parse-uuidtested
partialtested
partitiontested
partition-alltested
partition-bytested
pcallstested
peektested
persistent!tested
pmaptested
poptested
pop!tested
pop-thread-bindingstested
pos-int?tested
pos?tested
prtested
pr-strtested
prefer-methodtested
preferstested
primitives-classnamestested
printtested
print-ctortested
print-duptested
print-methodtested
print-simpletested
print-strtested
printftested
printlntested
println-strtested
prntested
prn-strtested
promisetested
proxytested
proxy-call-with-supertested
proxy-mappingstested
proxy-nametested
proxy-supertested
push-thread-bindingstested
pvaluestested
qualified-ident?tested
qualified-keyword?tested
qualified-symbol?tested
quottested
randtested
rand-inttested
rand-nthtested
random-sampletested
random-uuidtested
rangetested
ratio?tested
rational?tested
rationalizetested
re-findtested
re-groupstested
re-matchertested
re-matchestested
re-patterntested
re-seqtested
readtested
read+stringtested
read-linetested
read-stringtested
reader-conditionaltested
reader-conditional?tested
realized?tested
record?tested
reducetested
reduce-kvtested
reducedtested
reduced?tested
reductionstested
reftested
ref-history-counttested
ref-max-historytested
ref-min-historytested
ref-settested
refertested
refer-clojuretested
reifytested
release-pending-sendstested
remtested
removetested
remove-all-methodstested
remove-methodtested
remove-nstested
remove-taptested
remove-watchtested
repeattested
repeatedlytested
replacetested
replicatetested
requiretested
requiring-resolvetested
reset!tested
reset-meta!tested
reset-vals!tested
resolvetested
resttested
restart-agenttested
resultset-seqtested
reversetested
reversible?tested
rseqtested
rsubseqtested
run!tested
satisfies?
secondtested
select-keystested
sendtested
send-offtested
send-viatested
seqtested
seq-to-map-for-destructuringtested
seq?tested
seqable?tested
sequetested
sequencetested
sequential?tested
settested
set-agent-send-executor!tested
set-agent-send-off-executor!tested
set-error-handler!tested
set-error-mode!tested
set-validator!tested
set?tested
shorttested
short-arraytested
shortstested
shuffletested
shutdown-agentstested
simple-ident?tested
simple-keyword?tested
simple-symbol?tested
slurptested
sometested
some->tested
some->>tested
some-fntested
some?tested
sorttested
sort-bytested
sorted-maptested
sorted-map-bytested
sorted-settested
sorted-set-bytested
sorted?tested
special-symbol?tested
spittested
split-attested
split-withtested
strtested
string?tested
struct
struct-map
substested
subseqtested
subvectested
superstested
swap!tested
swap-vals!tested
symboltested
symbol?tested
synctested
tagged-literaltested
tagged-literal?tested
taketested
take-lasttested
take-nthtested
take-whiletested
tap>tested
testtested
the-nstested
thread-bound?tested
timetested
to-arraytested
to-array-2dtested
trampolinetested
transducetested
transienttested
tree-seqtested
true?tested
typetested
unchecked-addtested
unchecked-add-inttested
unchecked-bytetested
unchecked-chartested
unchecked-dectested
unchecked-dec-inttested
unchecked-divide-inttested
unchecked-doubletested
unchecked-floattested
unchecked-inctested
unchecked-inc-inttested
unchecked-inttested
unchecked-longtested
unchecked-multiplytested
unchecked-multiply-inttested
unchecked-negatetested
unchecked-negate-inttested
unchecked-remainder-inttested
unchecked-shorttested
unchecked-subtracttested
unchecked-subtract-inttested
underivetested
unquotetested
unquote-splicingtested
unreducedtested
unsigned-bit-shift-righttested
updatetested
update-intested
update-keystested
update-proxytested
update-valstested
uri?tested
usetested
uuid?tested
valtested
valstested
var-gettested
var-settested
var?tested
vary-metatested
vectested
vectortested
vector-oftested
vector?tested
volatile!tested
volatile?tested
vreset!tested
vswap!tested
whentested
when-firsttested
when-lettested
when-nottested
when-sometested
whiletested
with-bindingstested
with-bindings*tested
with-in-strtested
with-loading-contexttested
with-local-varstested
with-metatested
with-opentested
with-out-strtested
with-precisiontested
with-redefstested
with-redefs-fntested
xml-seqtested
zero?tested
zipmaptested
Feature
interop/include headersdone
interop/link librariesdone
interop/represent native objectsdone
interop/call native functionsdone
interop/explicitly box unbox native objectsdone
interop/refer to native globalsdone
interop/access native membersdone
interop/extract native value from jank objectdone
interop/convert native value to jank objectdone
interop/create native objectsdone
Feature
type annotationsdone
infer left hand typedone
infer right hand typedone
Feature
leiningen supportdone
nrepl supportdone
lsp serverdone
dap serverdone
\ No newline at end of file