Hello there,
I've ported UXP and Pale Moon 34.3.1 to ARM32 Windows RT — Surface RT and similar Tegra devices with help of claude. It's published, renamed and rebranded as Varan, with Pale Moon branding removed and a non-affiliation notice, per the redistribution terms.
Windows on ARM32 mandates Thumb-2 encoding while `js/src/jit/arm` emits A32, so the JIT needed a Thumb-2 backend — Baseline and Ion both. Built with clang-cl 18 and lld-link, D3D9 compositing at feature level 9_1, Skia content backend with NEON. Legacy extensions install and work.
The reason I'm posting is that the port turned up three things that look like upstream bugs on platforms you already support:
1. `poisonCode` fills freed jitcode with 0xA3 as an "undefined instruction", but `.short 0xa3a3` assembles to `adr r3, #652` — valid and non-faulting, so execution slides through. 0xA3A3A3A3 in A32 is `movge` with a reserved field, UNPREDICTABLE rather than UNDEFINED. A jitcode use-after-free is therefore silent corruption rather than a trap.
2. `poisonCode` never flushes the instruction cache — memset plus VirtualProtect, neither of which does I-cache maintenance. On a non-coherent I-cache the original code can survive in cache after the range is declared dead.
3. `__restrict` participates in MSVC name mangling, and some Skia declarations omit SK_RESTRICT where the definitions carry it, making them different symbols. Invisible on GNU builds.
Also small: the "A custom URL" new-tab option has no input field, so it can only produce a blank page.
Happy to file these properly with reproducers if that's wanted.
One thing I'd rather raise than have you find: the UA still reports PaleMoon/34.3.1, pinned because Google's sign-in gate reads it and I haven't confirmed a renamed UA passes. If you'd prefer it changed, say so and I will.
https://github.com/hamed7ir/varan
https://github.com/hamed7ir/varan-uxp
Thanks for maintaining UXP — a newer engine wouldn't have been portable to this hardware at all.
Varan — a UXP fork for ARM32 Windows RT
Moderators: trava90, athenian200
-
athenian200
- Contributing developer

- Posts: 1940
- Joined: 2018-10-28, 19:56
- Location: Georgia
Re: Varan — a UXP fork for ARM32 Windows RT
That's a project I considered at one point. I was actually thinking of porting to the Surface RT or even the Windows Phone back when they were still supported, but the hardware was old enough by the time I got into UXP development that I didn't think it was worth doing. Besides, I had a Surface Pro and didn't need the port, but wanted to do it for others who did get stuck with RT.
I'm glad to see a proof of concept like this, even if it's no longer a practical thing to do.
I'm glad to see a proof of concept like this, even if it's no longer a practical thing to do.
"Linux makes everything difficult." -- Lyceus Anubite
"Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That's the way that the license works." -- Steve Ballmer
"We always overestimate the change that will occur in the next two years and underestimate the change that will occur in ten." -- Bill Gates
"Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That's the way that the license works." -- Steve Ballmer
"We always overestimate the change that will occur in the next two years and underestimate the change that will occur in ten." -- Bill Gates
-
xhamedz
- Newbie

- Posts: 3
- Joined: 2026-08-04, 19:44
Re: Varan — a UXP fork for ARM32 Windows RT
Yeh its years that i wanted to port some thing to rt specially, and this year, with help of claude i did it, it wasnt a ready to go port, several things was broken about 5-6 clang bugs, uxp dosent have thumb2 jit at all, i wrote it with claude from scratch 35,056 line, it was so hard to managing it, so much more bugs and problems i had and the only way for testing was rebuild put on usb and test on device , its stable now, jit is slow but at least it works ,load and plays youtube, and i am now doing my last effort on it to fix the jit slowness , here is the screenshot , i dont know how to put an screenshot here i think it attached as file,athenian200 wrote: ↑2026-08-05, 03:18That's a project I considered at one point. I was actually thinking of porting to the Surface RT or even the Windows Phone back when they were still supported, but the hardware was old enough by the time I got into UXP development that I didn't think it was worth doing. Besides, I had a Surface Pro and didn't need the port, but wanted to do it for others who did get stuck with RT.
I'm glad to see a proof of concept like this, even if it's no longer a practical thing to do.
You do not have the required permissions to view the files attached to this post.
-
Moonchild
- Project founder

- Posts: 39718
- Joined: 2011-08-28, 17:27
- Location: Sweden
Re: Varan — a UXP fork for ARM32 Windows RT
Can't really help with the other points off the cuff, but this is something that is by design.
The option "A custom URL" is not a selectable option. It is a display-only option that the preferences window shows when a user has entered a custom URL in browser.newtab.url that doesn't match any of the normal selections. It should not display in the drop-down. If it does, then there's something wrong with either your parsing of XUL or your Javascript engine resulting in the script behind that control not detecting the correct value.
You do not have the required permissions to view the files attached to this post.
"Sales hates anything that can't be turned into a confident sentence." - anonymous warehouse worker
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
"Why debate someone you fundamentally don't trust?" - Dario Amodei
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite
-
xhamedz
- Newbie

- Posts: 3
- Joined: 2026-08-04, 19:44
Re: Varan — a UXP fork for ARM32 Windows RT
Thank you for the response. thats useful, and I had it backwards. I reported it as an upstreamMoonchild wrote: ↑2026-08-05, 07:30Can't really help with the other points off the cuff, but this is something that is by design.
The option "A custom URL" is not a selectable option. It is a display-only option that the preferences window shows when a user has entered a custom URL in browser.newtab.url that doesn't match any of the normal selections. It should not display in the drop-down. If it does, then there's something wrong with either your parsing of XUL or your Javascript engine resulting in the script behind that control not detecting the correct value.
Image1.png
bug when it's a symptom on my side. I thought new moons get this instead of palemoon start page.
I think, I know the cause, and it may not be XUL or the engine: I changed the
new-tab default to Quick Dial, so browser.newtab.url holds a value that doesn't
match any menuitem, in which case the control is behaving exactly as you
describe and I broke it myself by changing the pref out from under it.
Either way I'll correct my notes thank you.