question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

(My crazy?) Plan to re-unite 0.23 and 1.0

See original GitHub issue

We’ve already made big progress towards this via #5252 and #5241 and will be helped along by #5226 (see also #5044).

My assumptions:

  1. Once upon a time, 0.23 and 1.0 were the same, until I completely destroyed 1.0 with Scala.js.
  2. Besides JS, the diff between 0.23 and 1.0 at the moment is very small (does anyone have a list?).
  3. 0.23 will be merging into 1.0 for years to come.
  4. “Platformed” files (split across JVM/JS) are the root of the worst merge conflicts.
  5. Most of the file-splitting I did to cross-compile to JS was due to lack of cross-compiling crypto and fs2-io. Both have since been addressed, and all these files can be glued back together.
  6. Off the top of my head, the biggest breaking changes actually needed to cleanly cross to JS are:
  • Some Async constraints instead of Sync, but only for crypto (and only needed for browsers).
  • Using ip4s for the Server address, rather than a JVMism.

What this means (bear with me): we can probably cross-compile 0.23 core, circe, and client for JS (minus crypto support in browsers) with minimal effort i.e. just by fiddling with the build. I’m not saying we should do this, although it would:

  • tighten the diff in the build configuration between 0.23 and 1.0;
  • force 0.23 feature development to target JS as well, to avoid painful merges into 1.0;
  • certainly be nice to have a stable release with JS support.

On the other hand, this would push us even further away from 0.22.

In any case: what I’d like to do (if it’s not too insane) is “re-cut” 1.0 from the updated 0.23. The thinking is, instead of glueing files back together in 1.0, we have a much better chance to quash future merge conflicts by re-copying the affected files directly out of 0.23 (of course, being very careful not to overwrite any of the nice non-JS things added to 1.0 since). The more we can do to make 0.23 like 1.0 the nicer the outcome will be.

Anyway, just a (crazy) idea and understandably the ship may have sailed on some of this. But if it’s still an option there’s some exciting things looming for 1.0-only that once landed will make this more difficult.

Finally, apologies for how time/energy-consuming this JS stuff has been, I really hope things will be smoother from here.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
rossabakercommented, Sep 23, 2021

I think we can revisit the notion of the MimeDB, given that we’re creating constants for proprietary formats for business that went under a decade ago. The bar to get into that registry wasn’t high. It’s neat that we’re adhering to standards, but rearranging how we adhere to it is definitely on the table.

1reaction
armanbilgecommented, Sep 23, 2021

This is probably a terrible idea but what about cross-building 0.23 for scala.js, with the js version not being published and all the js implementations being stubbed out with ????

EDIT: that second suggestion isn’t not going to work, as it still relies on dependencies being available for js.

Actually, that’s what part of what I’m suggesting. The 0.23 dependencies (which are shared with 1.0) are now available for JS. And the amount of JS specific (i.e. non-shared) code in 1.0 is very very small (it’s been moved upstream into fs2.io and http4s-crypto). If you have a look at the JS sources for core you can see it’s mostly just empty files: https://github.com/http4s/http4s/tree/main/core/js/src/main/scala/org/http4s

That’s why I’m pretty sure we’ve arrived to a place where we can “flip the switch” on several 0.23 modules and they should already be publishable for JS (or, very nearly so).

Just a random thought, but is there any reason why splits into platform-specific source files can’t be backported to 0.22/0.23 for subsequent ease of forward merging, even when there’s only a jvm file in those versions?

It could work, the hard part is policing these files in 0.22/0.23 since there’ll be no tests/compiler guidance about what should or shouldn’t be platformed. The better news is that particularly after #5226 merges I think we can get rid of nearly all these split files actually.

Read more comments on GitHub >

github_iconTop Results From Across the Web

736 kB - Hugging Face
1 D 1 ·plans 1 ·understand 1 ·instead 1 ·form 1 ·key 1 ·chance 1 ... 1 ·Meanwhile 1 ·crazy 1 ·2000 1...
Read more >
vocab.pubmed.txt - UCI Machine Learning Repository
1% 1+ =10 =.10 =1.0 =10% >10 >/=10 >1.0 >10% -1.0% -10% .10 $10 *10 #10 +/-10 ... against-the-rule agalactia agalactiae agalactosyl agalsidase...
Read more >
ED300236.pdf - ERIC - Department of Education
ABSTRACT. This is the first of a three-volume set containing papers related to the theme of science education. In this volume, science and...
Read more >
Proceedings of the 28th European Paediatric Rheumatology ...
O01. Modeling HLH & MAS susceptibility identifies the characteristics of hyperinflammatory CD8 T-cells. E. Landy 1, V. Dang 2, J. Varghese 2, ...
Read more >
Western Wolves vs. fnatic at Mad Catz Invitational | HLTV.org
Complete overview of the Western Wolves vs. fnatic matchup at Mad Catz ... Reunion ggggggfshjk. holy freaking crap what a match. 2013-08-13 12:41....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found