Repository navigation
Revisit checking in enough source to build "small-icu" into the node repo #3476
Description
Activity
- addedi18n-apiIssues and PRs related to Node.js internationalization support.Issues and PRs related to Node.js internationalization support.
on Oct 21, 2015 +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.
@jasnell you could still use
--with-intl=noneand get today'sconfigurebehavior. Should be noted here as well.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.
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.
The source sounds fine. v8 uses ~98MB and openssl uses ~43MB.
BTW, is building with
full-icuby 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-icuby default probably means checking in ICU + full data- which would be something like ~45M on disk (source files) and13M 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.
@srl295 Does having
full-icupackaged have any impact on performance or memory, or is it all loaded on-demand?@silverwind It's all demand paged. That's why there's a separate big and little endian version.
Sounds good, let's see some deltas 😉
is there any progress on this?
- "du -sh" reports 45M on disk. No config or source changes needed. Small enough?
- 45M is enough Icu to build full or small.
+1... it's a reasonable size.
30 remaining items
- added 2 commits that reference this issue
on May 3, 2016 - added a commit that references this issue
on May 4, 2016 - added 2 commits that reference this issue
on May 17, 2016 - added a commit that references this issue
on Jul 27, 2026
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)
.datfile 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-icuas an option (just as you can do today) or (b) provide the full.datfile at runtime (just as you can do today)So the upshot of this change would be that we could make
small-icutheconfiguredefault 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