Skip to content

Revisit checking in enough source to build "small-icu" into the node repo #3476

Description

@srl295

from discussion on #3460 and others

Theoretically, a stripped down ICU source base might be 23M on disk / 4.3M compressed - this is including the 1.5M "small ICU" (i.e. English only) .dat file in lieu of the 25M one which usually comes in an ICU tarball.

Investigate the actual size needed here. This would include full functionality, just not full data. If you want node with full data you would still be able to: (a) download a full ICU tarball and build with full-icu as an option (just as you can do today) or (b) provide the full .dat file at runtime (just as you can do today)

So the upshot of this change would be that we could make small-icu the configure default without any download needed, and a small impact to the repo (probably checking in source+blob, otherwise checking in a small tarball).

cc @trevnorris @bnoordhuis @jasnell

Activity

  1. added
    i18n-apiIssues and PRs related to Node.js internationalization support.
    on Oct 21, 2015
  2. jasnell commented on Oct 21, 2015

    @jasnell
    Member

    +1 ... with the caveat that we need to investigate how this impacts building on the smaller devices (like rpi). If the impact building icu by default on those devices is significant enough, then we'll need a configure option for optionally turning off the ICU build and set that as the default of CI runs only on the rpi devices.

  3. srl295 commented on Oct 21, 2015

    @srl295
    MemberAuthor

    @jasnell you could still use --with-intl=none and get today's configure behavior. Should be noted here as well.

  4. trevnorris commented on Oct 21, 2015

    @trevnorris
    Contributor

    I'm alright further investigating this approach. The 1.5MB dat file would only be updated every six months or so would have less impact then updating v8 does.

  5. jasnell commented on Oct 21, 2015

    @jasnell
    Member

    I would add that I'd definitely prefer the source to be checked in directly rather than as a tar ball, even if it does mean the full 23 M. The tarball idea just feels dirty and reduces visibility (well, it's no less visible than what we have now, but ... you know). With changes coming only twice per year, the hit (shouldn't be / won't be) too bad.

  6. trevnorris commented on Oct 21, 2015

    @trevnorris
    Contributor

    The source sounds fine. v8 uses ~98MB and openssl uses ~43MB.

  7. self-assigned this
    on Oct 21, 2015
  8. srl295 commented on Oct 22, 2015

    @srl295
    MemberAuthor

    @silverwind asked

    BTW, is building with full-icu by default out of question?

    First of all, I'd certainly like that, personally.

    Second, "Download-by-default" is out of the question, so to do full-icu by default probably means checking in ICU + full data- which would be something like ~45M on disk (source files) and 13M compressed (delta to the nodejs tarball). The "" has to do with how much of the tooling needs to be stripped out or left ( some might be needed to do an endian swap or to rebuild small vs full data etc.)

    I basically have the action here to actually try out these options and report back the deltas.

  9. silverwind commented on Oct 22, 2015

    @silverwind
    Contributor

    @srl295 Does having full-icu packaged have any impact on performance or memory, or is it all loaded on-demand?

  10. srl295 commented on Oct 22, 2015

    @srl295
    MemberAuthor

    @silverwind It's all demand paged. That's why there's a separate big and little endian version.

  11. silverwind commented on Oct 22, 2015

    @silverwind
    Contributor

    Sounds good, let's see some deltas 😉

  12. MylesBorins commented on Feb 16, 2016

    @MylesBorins
    Contributor

    is there any progress on this?

  13. srl295 commented on Feb 16, 2016

    @srl295
    MemberAuthor
  14. srl295 commented on Feb 16, 2016

    @srl295
    MemberAuthor
  15. jasnell commented on Feb 16, 2016

    @jasnell
    Member

    +1... it's a reasonable size.

  16. 30 remaining items

  17. added a commit that references this issue on Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

i18n-apiIssues and PRs related to Node.js internationalization support.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions