Skip to content
This repository has been archived by the owner on Oct 21, 2022. It is now read-only.

Update ClojureScript #1973

Open
3 of 9 tasks
cldwalker opened this issue Sep 11, 2015 · 10 comments
Open
3 of 9 tasks

Update ClojureScript #1973

cldwalker opened this issue Sep 11, 2015 · 10 comments
Assignees
Milestone

Comments

@cldwalker
Copy link
Member

Updating ClojureScript is important because it's preventing us from using cljs.test (#1647) and having a modern ClojureScript for plugin authors and to encourage more contributors and more importantly from evaling in modern clj/cljs projects (LightTable/Clojure#52).

It is likely that the remaining items will require one monolithic branch. We can't partially upgrade cljs on master as master needs to be fully working. Here is a running list of known todos needed to update cljs:

  • Remove uses of lt.util.cljs/clj->js and lt.util.cljs/js->clj and rely on the fns of the same name that come with clojurescript
  • Fix all compilation warnings that show up on latest lein cljsbuild. Known warnings to fix include missing requires and prefix JSON e.g. js/JSON
  • Ability to recompile cljsDeps.js after a cljs upgrade with one command like this
  • Upgrade to latest cljs and lein-cljsbuild. This is easy to do now that Prelude to clojurescript upgrade #2072 is in
  • Recompile cljsDeps.js for upgraded cljs: lein cljsbuild once cljsdeps
  • Make sure extend-types that occur on core classes are updated - see cljs.cljs
  • Fix Clojure(Script) eval. Does not work for to be investigated reasons
  • Fix threading issue when starting LT: arguments$ is not defined. See BenjaminVanRyseghem@4e647f8 for an attempted fix
    • I think fixing this will fix the file navigator/opener
  • Fix erratic printing with prn. Trying to prn a LT object sometimes doesn't show up
  • May need to use fetch's master for Remove dependency on goog.net.XhrIo and goog.events fetch#17
  • Anything else?

Note that upgrading cljs is being attempted in #1952 and was last attempted by Chris in 8e73f59. For this upgrade to be considered successful, the branch must pass our QA checklist

Once this is done, see #1991 for follow work to be done

@lks128
Copy link

lks128 commented Jul 29, 2016

@cldwalker, I would like to participate on solving this issue as it feels like a mayor blocker for such important thing as automated testing.

It looks like long time there was no activity... Are there any blockers?

Regarding the QA checklist it would be nice to automate it, I'm referring: https://github.com/electron/electron/blob/master/docs/tutorial/using-selenium-and-webdriver.md

@kenny-evitt
Copy link
Contributor

@lks128 There's a checklist of items at the top of the issue. Also see the referenced issues and PRs for other details.

@cldwalker
Copy link
Member Author

@lks128 Great! Attempting to fix any of the Fix items would be appreciated. As outlined in the first items, steps to setup an upgrade environment: upgrade cljs, lein-cljsbuild and lein cljsbuild once cljsdeps. We won't be able to merge this into master until the QA checklist works but if any progress is made on the checklist, we could save any work to a separate branch

@sbauer322
Copy link
Contributor

Make sure extend-types that occur on core classes are updated - see cljs.cljs

@cldwalker or @kenny-evitt, could you clarify what this means, or how I would go about making sure the extend-types are properly updated?

@kenny-evitt
Copy link
Contributor

@sbauer322 I don't know what that means. @rundis – thoughts?

@sbauer322
Copy link
Contributor

@kenny-evitt not sure if you get notifications on highlights for LightTable/fetch, but I opened an issue asking for a release since it seems to address some warnings during the build. Just wanted to mention it here too!

LightTable/fetch#18

@cldwalker
Copy link
Member Author

@sbauer322 Hi. This means you'll need to familiarize yourself with core protocols in cljs.cljs e.g. IFn and ensure they are being implemented correctly w/ a modern clojurescript. Then you should understand how these extensions are used and verify none of them are behaving differently enough to cause bugs. Fwiw, none of the core team has written these extensions

@sbauer322
Copy link
Contributor

sbauer322 commented Feb 13, 2017

The following branch was created to better track work being done for this issue: https://github.com/LightTable/LightTable/tree/1973-update-clojurescript

Until a pull request is open, consider it a WIP and subject to change (and force pushes). Remaining work to complete on the branch:

  • Remove uses of lt.util.cljs/clj->js and lt.util.cljs/js->clj and rely on the fns of the same name that come with clojurescript
  • Fix all compilation warnings that show up on latest lein cljsbuild. Known warnings to fix include missing requires and prefix JSON e.g. js/JSON
  • Ability to recompile cljsDeps.js after a cljs upgrade with one command like this
  • Upgrade to latest cljs and lein-cljsbuild. (Branch currently using cljs 1.7.145, clj 1.7.0, and lein-cljsbuild 1.1.4)
  • Recompile cljsDeps.js for upgraded cljs: lein cljsbuild once cljsdeps
  • Make sure extend-types that occur on core classes are updated - see cljs.cljs
  • Fix Clojure(Script) eval. Does not work for to be investigated reasons
  • Fix threading issue when starting LT: arguments$ is not defined.
  • Fix erratic printing with prn. Trying to prn a LT object sometimes doesn't show up
  • Tag and release fetch 3.0 for Remove dependency on goog.net.XhrIo and goog.events fetch#17
  • Get plugins working again (e.g., Rainbow is not rainbowing and workspace-nav is not naving)
  • Further upgrade cljs and lein-cljsbuild to latest available.
  • Anything else?

@Mouvedia
Copy link
Collaborator

Mouvedia commented Feb 15, 2017

Anything else?

Maybe release a 0.9.0-rc first, so that we can have feedbacks. This seems like a break-prone update.

@sbauer322
Copy link
Contributor

I am hesitant to make a proper release candidate until the upgrading is restored in some form. That said, it would make sense to have this clojurescript upgrade merged into a 0.9.0-rc branch rather than master due to the potential for breakage as you mentioned.

If we get our upgrading fixed and implement something like this edge release issue then having release candidates would be much more feasible.

@sbauer322 sbauer322 added this to Backlog in Technical Debt Apr 17, 2018
@prertik prertik mentioned this issue Feb 12, 2019
16 tasks
@Mouvedia Mouvedia assigned prertik and unassigned sbauer322 Feb 12, 2019
@prertik prertik pinned this issue Apr 16, 2019
@prertik prertik moved this from Update Libraries to In Progress in Technical Debt Dec 16, 2019
@prertik prertik unpinned this issue Dec 9, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
Technical Debt
  
In Progress
Development

No branches or pull requests

6 participants