Open CraftSpider opened 9 months ago
Ooh, very exciting!
I am so baffled by the linking errors on everything - they aren't happening locally, which makes them pretty hard to diagnose.
Yep, I saw undefined reference to symbol 'BrotliDecoderDecompress'
in my CI logs and was also wondering what that's about. Probably some strange interaction with dependencies.. (?) I'll try poking at the CI container a bit.
The icu/unicode stuff is probably because the library does symbol versioning, which you only disable normally on say system installs. I probably, somehow, am locally getting some system installed version pulled in which is providing the symbols. This is... kind of annoying, but I can fix it.
Found a solution but it will require updates to vcpkg-rs
- that PR will go up tonight or tomorrow, probably.
Attention: Patch coverage is 64.92109%
with 978 lines
in your changes missing coverage. Please review.
Project coverage is 47.46%. Comparing base (
82484db
) to head (aeb720d
). Report is 15 commits behind head on master.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
I should look into whether there's an existing CoreFoundation
/CoreText
library for mac. Since they're, well, core, it should be possible to use a standard sys
crate for them without jumping through the hoops other dependencies need due to supporting so many ways of handling them.
There's https://github.com/servo/core-foundation-rs ... the crates don't seem as popular as I'd have thought, but a Servo project is probably going to be trustworthy?
@pkgw What's your take on dropping support for MacOS < 10.7, OSX Lion? It's more than 10 years old, and some quick googling says the number of mac users on it should be basically negligible. It would allow some minor simplification.
Related note - the core-foundation-rs crate and similar from servo target 10.7 and above, so it would allow using them.
@CraftSpider Dropping support for the older macOS seems fine to me. It generally becomes intractable to support the older OSes without paying for your own custom CI setup, anyway. It looks like conda-forge is currently targeting >=10.9, and I'd generally lean towards copying them.
This is a big change - if desired, I can split it out into the primary change to Rust, then the individual library wrappers as follow-ups to the big change, as I made sure to get tests passing between each major change.
Obviously I'm biased, but I'm tempted to pull in my crate enrede
to replace icu
at some point. It means both one fewer allocation for recoding strings, but also would allow replacing most usages of the std CString
with enrede's CString<Utf8>
, an encoding-strict type that is null terminated, but safe to turn to a &str
for easy use in Rust code.
Been poking this on and off for a while, finally reached the point where it's... not done, but should pass most tests on Windows and hopefully Linux. Mac will require a bit more love before it works. Opening to see what CI has to say so far.