Hacker Newsnew | past | comments | ask | show | jobs | submit | aninteger's commentslogin

Famous Richard Branson quote:

"If you want to be a millionaire, start with a billion dollars and launch a new airline."


I did attempt this with whatever was state of the art (SOTA) about 6 months ago for my own C++ and was disappointed. It's just not there yet.

:(

So that signal is that good. Back to manual c++ to simple and plain C porting then.


There's a serious advantage to becoming fluent by moving to a country that speaks that language fluently. Try becoming fluent in Japanese in Nigeria for "Japanese hard mode"

It's "legacy" because it's essentially tied to Windows. Yes, technically it works on Linux, and no doubt that was an amazing feat, but no serious company is running MSSQL on Linux when all the documentation, all the best practices are all based on running that on Windows.


Why did they port it to Linux?

Knowing nothing about this, I wonder if they're getting ready to retire Windows Server, and wanted to get their server products off it?

Edit: How they did it is also quite fascinating:

https://www.microsoft.com/en-us/sql-server/blog/2016/12/16/s...

https://www.microsoft.com/en-us/research/project/drawbridge/

>a key contribution of Drawbridge is a version of Windows that has been enlightened to run within a single Drawbridge picoprocess.

MSSQL on Linux only seems to use parts of that project (a smaller abstraction layer), but that's still super cool.


Two big reasons I realize,

First reason is MS SQL team read the writing on the wall and realized if they wanted a chance to stay relevant, they needed to support Linux. I'm not sure that play really worked for them but it also gave benefits for number 2.

Second, they had to eat their own dogfood operationally with Azure and hated the taste of dealing with Windows. Linux offered lower RAM/CPU footprint along with much more ease of use with Kubernetes/Containers. Yes, Windows containers exists but as someone who has had to use them, it's rough experience.


The "why" is for Kubernetes and Docker support.

For example, the Aspire.NET orchestrator pulls the Linux docker image of SQL Server in much the same way as it does for MySQL or Postgres.


Wait until you read about the version they released for ARM, briefly! It had a dynamic recompiler which would produced ARM64 ELF libraries from Windows PE executables, allowing x86_64 MSSQL to run on ARM Linux! They ditched that once Rosetta support on ARM Macs was good enough to run x86_64 VMs, as apparently all they cared about was supporting Docker on Macs...

I think it is essentially "complete drawbridge", too. I haven't played around with it in a while, but from memory, you can coerce it to run arbitrary Windows executables, basically anything without graphics (which are missing from the PAL they ship).

It's quite impressive, though also necessary if you think about it. SQL Server requires the legacy dot net stack, AND it also ships with a full copy of the msvc compiler/linker! Not sure if that's ever used by the Linux port, but it is installed. MSSQL kind of exercises every inch of the Windows API surface.

You can even run e.g. xp_dirtree and see an overlay of the host disk along with Drawbridge's copy of Windows.


> They ditched that once Rosetta support on ARM Macs was good enough to run x86_64 VMs, as apparently all they cared about was supporting Docker on Macs...

Was a research project gone out of hand, arm64 macOS wasn't on the radar and the IoT product it was released for didn't succeed.

> I think it is essentially "complete drawbridge", too. I haven't played around with it in a while, but from memory, you can coerce it to run arbitrary Windows executables, basically anything without graphics (which are missing from the PAL they ship).

sbtrans (for arm64) was static binary translation only. No JIT fallback whatsoever.

> It's quite impressive, though also necessary if you think about it. SQL Server requires the legacy dot net stack,

The arm64 sbtrans-based version had that gone too, and it didn't have a nice engineering path towards supporting those. It'll come back later though I'm pretty sure, with using a more native arm64 version (or arm64EC which exists nowadays)

> AND it also ships with a full copy of the msvc compiler/linker! Not sure if that's ever used by the Linux port, but it is installed. MSSQL kind of exercises every inch of the Windows API surface.

Yes that's used for dynamic query optimisation. It was disabled in Azure SQL Edge for arm64 as that was a JIT-less translated version.


The main reason was to be able to deploy SQL Server in Linux based containers.

Windows Server is doing alright.


Isn't that basically a heavier version of a unikernel?


Having Scarlett Johansson's voice might not be so bad or even something less robotic.


That happened already, in typical ai fashion: blatant theft https://www.nbcnews.com/tech/scarlett-johansson-legal-action...


You wouldn't download a Scarlett Johansson...


[flagged]


Do you genuinely think a “frequency” is what makes a human voice recognizable?

That’s like using someone’s face in an app and then saying “how can you steal pixels?”


[flagged]


You can’t steal pixels or frequencies. But you can use someone’s image or their voice to sell your product without their permission.

You can get all existential about it if you want - I just know that if someone used my face or my voice to shill for a product without my permission i’d be pissed. I’m pretty sure you would be too.


I’d be pissed if my code was used for training an AI too but that seems legal thus far…


XCB did not largely replace Xlib. In fact, some (all?) implementations of Xlib are built on top of XCB.


Maybe the technical politics have changed, but I feel like I remember there was some push in the late 2000s to rewrite libraries that were using Xlib to instead use XCB.

Regardless, that's sort of my point: having a lower level fiddly layer is a desirable quality, and Xlib being rebased on top of it isn't exactly a counterexample.


Turns out you want to build higher-level interfaces on top of lower-level interfaces, not the other way around.


Time to port this to Wayland using Claude code, right?


points finger you son of a bitch, I'm in.


You could submit your PR to Nakst's Luigi toolkit: https://github.com/nakst/luigi

You don't have to make a complete alternative. You can add calls to ATK (accessibility toolkit) on Linux/Unix platforms. I'm not sure what needs to be done on Win32 platforms though.


It doesn't but it definitely "implements" a single inheritance tree (with up casting/down casting) which I believe Xt toolkits (like Motif) also did.


The best example I can think of is the Win32 controls UI (user32/Create window/RegisterClass) in C. You likely can't read the source code for this but you can see how Wine did it or Wine alternatives (like NetBSD's PEACE runtime, now abandoned).

Actually the only toolkit that I know that sort of copied this style is Nakst's Luigi toolkit (also in C).

Neither really used inheritance and use composition with "message passing" sent to different controls.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: