Convert project to use Reader Conditionals

Description

There is a fair amount of duplicated code between the Clojure and ClojureScript versions of core.async. Converting the library to use Reader Conditionals would get rid of a lot of code volume and reduce the chances of changes in one library not being correctly implemented in the other. It may also make maintenance and source reading easier by making the platform specific code stick out more, where the 'essence' of core.async stays in pure Clojure. This could also be an opportunity to bring cljs.core.async.macros into the main async namespace using reader conditionals.

Despite these benefits there are a few downsides to this:

  • Currently the two ports are able to exist fairly separate from each other and the domain experts in each can work on their own part without affecting the other. If this was a concern, more tests may be able to be added to ensure there aren't breakages

  • Combining the two ports may make it harder to read either version in the same source file.

As this is a fairly large change, I wanted to get feedback on this proposal before going any further.

Environment

None

Assignee

Unassigned

Reporter

Daniel Compton

Labels

None

Approval

None

Patch

None

Priority

Major
Configure