Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 07:38

    Atry on v11.8.2

    (compare)

  • 07:37

    Atry on v11.9.0

    (compare)

  • 07:33

    Atry on v11.8.2

    (compare)

  • 07:27

    Atry on 219-fix

    (compare)

  • 07:27
    Atry closed #219
  • 07:27

    Atry on master

    Always update for views and mut… Merge pull request #220 from Th… (compare)

  • 07:27
    Atry closed #220
  • 07:12
    Atry synchronize #220
  • 07:12

    Atry on 219-fix

    Always update for views and mut… (compare)

  • 01:33
    Atry reopened #219
  • 01:32
    Atry closed #219
  • Oct 09 04:00
    notyy commented #222
  • Oct 09 03:59
    notyy closed #222
  • Oct 09 03:59
    notyy commented #222
  • Oct 08 20:28
    Atry commented #223
  • Oct 08 20:28

    Atry on master

    docs: fix typo Merge pull request #223 from Ja… (compare)

  • Oct 08 20:28
    Atry closed #223
  • Oct 08 20:20
    Jason-Cooke opened #223
  • Oct 07 03:30
    glmars commented #222
  • Oct 06 04:05
    notyy opened #222
杨博 (Yang Bo)
@Atry
@glmars Binding.scala uses Scalaz because Each requires scalaz.Monad.
However, Dsl.scala does not depend on Cats nor Scalaz.
Binding.scala does not have to depend on Cats if we replace Each to Dsl.scala
Leonid Turnaev
@glmars
So, there is an additional benefit: reduced scalajs output size (Scalaz isn't so small in JS)! In case if some project still doesn't use any FP library.
杨博 (Yang Bo)
@Atry

(Scalaz isn't so small in JS)

The entire Scalaz is big. Fortunately a typical web application with Binding.scala only uses a very small part of Scalaz. You can open your xxxx-fastopt.js to check it. DCE in Scala.js is very useful.

Leonid Turnaev
@glmars

DCE in Scala.js is very useful

I agree, DSE is cool. But on some project I had 2640/2400 kb result of fullOptJS with/without Scalaz.

I suppose that the influence of Scalaz in Binding.scala can be not so much.
(my test project have not used Binding.scala)
Leonid Turnaev
@glmars

@Atry Unfortunately I found a case where application which uses Binding.scala should depend on Scalaz. Please, see example from FAQ:

@dom def renderList(data: List[Binding[String]]) = <ol>{
  import scalaz.std.list._ // Type classes for List
  for (b <- data) yield {
    <li>{b.bind}</li>
  }
}</ol>

Can Dsl.scala remove this dependency (or change to Cats)?

杨博 (Yang Bo)
@Atry
Of course, because Dsl.scala does not support for-comprehension
Dsl.scala itself can be considered as an alternative to for-comprehension
Leonid Turnaev
@glmars
:smile: O! I understand.
Leonid Turnaev
@glmars

@Atry If you're interested, I have repeated the js-framework-benchmark with different versions of Binding.scala.
Here are results for: Chrome 32-bit and for: Chrome 64-bit (sorry, 3 runs only).

Conclusions and questions:

  • your conclusions about Scala 2.12 was confirmed, memory usage is increased by 22-23%:

glmars-v2.12-memory.png

  • but the absolute values are lower than in your results:

atry-v2.12-memory.png

  • I especially pleases by memory consumption on a 32-bit version of Chrome:

32-bit-memory.png

  • one question only: do you have any guesses why the clear rows time increased in Binding.scala v11.0.1?

clear-rows-increase.png

杨博 (Yang Bo)
@Atry
v11 fixed a bug in v10 when removing a node. The fix to ThoughtWorksInc/Binding.scala#56 performs some internal cache invalidation.
Leonid Turnaev
@glmars
Thank you, I also thought about this task :smile:
杨博 (Yang Bo)
@Atry
There could be an optimization in Scala.js scala-js/scala-js#2675, which should improve both code size and computational performance.
The IIFE can be replaced to a normal code block, considering let and const in ECMAScript 2015 code blocks has the same lifecycle as var in IIFEs.
Leonid Turnaev
@glmars
It will be great!
Thanks for the explanation.
杨博 (Yang Bo)
@Atry
You can create a PR to Scala.js if you're interested to optimize the memory usage in Scala 2.12
When compling a closure to JavaScript
  • Scala.js 2.11 create classes
  • Scala.js 2.12 create nested closures in IIFEs, which consums more memory than classes
  • Ideally, it should create plain closures in code blocks (for ECMAScript 2015 target)
Leonid Turnaev
@glmars
I understand an idea, but I'm not sure I am able to do this (because I don't know Scala.js insides very well) :worried:
杨博 (Yang Bo)
@Atry
Never mind
Moritz Bust
@Busti
I recently had a chat with the folks over at scala/contributors and became aware of the fact that xml mode will be faded out with scala 3.
What will happen with binding.scala when that happens?
杨博 (Yang Bo)
@Atry
@Busti Where is the link of the chat
Moritz Bust
@Busti
@Atry Seems like the discussion is still going on at https://gitter.im/scala/contributors
Moritz Bust
@Busti
Does binding.scala use a compiler plugin to parse the contend of @dom methods differently?
Or does it rely on xml literals?
杨博 (Yang Bo)
@Atry
No. Instead, Binding.scala hacks the AST generated by the Scala parser.
Moritz Bust
@Busti
Does that mean that an attr without a value like <foo bar></foo> is possible?
杨博 (Yang Bo)
@Atry
Are you talking about Scala 3 or the current version of Binding.scala?
Moritz Bust
@Busti
The current version of binding.scala . Since scala xml literals are not sgml literals, the above is not valid xml.
杨博 (Yang Bo)
@Atry
I don't think Scala 2 parser accepts <foo bar></foo>
Moritz Bust
@Busti
I recently tried it on https://astexplorer.net/ and it failed without generating ast for the "malformed" literal.
杨博 (Yang Bo)
@Atry
🤷
Moritz Bust
@Busti
Thanks a lot for your answers :)
杨博 (Yang Bo)
@Atry

@/all Hello, Binding.scala users and contributors,

There is a discussion about the feature of XML literals in Scala 3, in which you guys may be interested.

杨博 (Yang Bo)
@Atry
@/all You may also want to have a look at the proposal of name-based XML literal at https://contributors.scala-lang.org/t/pre-sip-name-based-xml-literals/2175
Leonid Turnaev
@glmars
Hi @Atry, could you publish new release with ThoughtWorksInc/Binding.scala#90 and ThoughtWorksInc/Binding.scala#104 included?
杨博 (Yang Bo)
@Atry
Sure
Leonid Turnaev
@glmars
Thanks ;)
杨博 (Yang Bo)
@Atry
@glmars It seems that CI is broken due to absence of Oracle JDK
Leonid Turnaev
@glmars
Yeah I saw. Looks like your latest commit have fixed this! :+1:
Leonid Turnaev
@glmars
You have done a big code cleaning yesterday! :thumbsup: :star2: :smile:
Leonid Turnaev
@glmars
Binding.scala 11.2.0 already in Maven Central! :tada:
Wojtek Pituła
@Krever
Hey, sorry for asking here, but my question probably doesn't fit stack overflow either. Is there any up-to-date example/starter for binding.scala with scalajs-bundler/webpack? Or should I just try to assemble it from scratch?
Leonid Turnaev
@glmars
Unfortunately, I don't know such examples, but this should be easy! There is no something special with scalajs-bundler and Binding.scala. Binding.scala is regular Scala.js library.
Wojtek Pituła
@Krever
I see now, I got one working byt adjusting slinky starter. It was easy, but having something out of the box would be nice from increasing adoption perspective. Nevertheless I find Binding.scala an extremely nice project :)
Btw should I consider some state manager like diode/redux or this is not needed with Binding.scala ?