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

What would be advantages of not having a hardware abstraction layer (HAL)?

Are there any other operating systems without HAL?


Most "full featured" OSes do not use HALs - they are most commonly found in embedded development where you have to wrap a platform that otherwise has no mechanisms to inform the OS what is where.

Which is also related to how original NT used them. ARC (and its PC BIOS-based emulator, NTLDR) provided early boot ability, HAL provided "driver" to access platform, and the NTOSKRNL itself didn't have to worry so long as it was running on same base ISA and had all the necessary drivers loaded.

So for example on x86, there were HAL.DLLs for PC BIOS, "standard" PC BIOS multiprocessor, ACPI (uniprocessor and multiprocessor variants), Sequent, SGI Visual Workstation, etc.


To add to your point, Microsoft had originally envisioned that vendors would write their own HAL.DLL’s to make Windows compatible with their hardware, but it turned out nobody really had the expertise needed to do that, and Windows started to depend more and more on implementation details of the most common one, and at this point the idea is dead. Hardware vendors target one single windows HAL for x86_64, and porting windows to another platform requires rewriting/rebuilding all sorts of stuff, not just the HAL. It was a cool idea at the time that didn’t really pan out.


There was a certain level of custom HALs being written, but those depended heavily on the "shared development" model that Microsoft did with vendors, and a lot of hardware was shipping bog-standard PCs anyway.

The rare custom HALs were mainly for things like x86 NUMA systems, or from ports to alternate architectures.


I ended up using parser combinator library nom. It's not something I use daily, therefore parsing became a puzzle on its own.

Nom already has a parser for numbers. However, I didn't find an elegant way to take at most one digit. In the end I used take_while_m_n, and mapped it with u64::from_str().

Another challenge was absence of something such as find_all, that would repeatedly try to parse beginning from each character and then return all matches. I ended up writing my own combinator.

https://github.com/drola/AdventOfCode2023/blob/main/src/bin/...


Nice! I also ended up using nom, it was quite fun.

https://github.com/woile/adventofcode/blob/main/2023/day1/sr...


Wow thanks, I was stuck with the iterating part and your solution really helped me :)


This is anecdotal. In my search results, StackOverflow is less often the top result. Often I find solutions in GitHub issues, blogs, or first-party documentation. The bar for first-party docs has been raised in recent years - new React docs are one such example.


I see the opposite occurring in my searches. The official documentation sites are usually far down the results list behind blog spam sites.


SEEKING WORK | Remote, based in Slovenia (UTC+1)

Full-stack software engineer

Keywords: React, TypeScript, Flask, Python, PHP, Symfony, WebGL, D3, WebRTC, AWS, Docker, Git

Contacts:

[email protected]

https://github.com/drola/

https://www.linkedin.com/in/matja%C5%BE-drolc-aa63213a/

https://drola.si/

Past projects include:

- managing full software lifecycle, including planning, coding and deployment on cloud (AWS) or on-premises (Docker, VMs, bare metal)

- video: transcoding and delivery of a video archive to web browsers and live streaming with HLS and WebRTC.

- interactive 3D visualization of technical measurements with contextual information (tech stack: WebGL, Three.js, RxJS)

- 2D charts with various twists, including data transfers and rendering with varying levels of detail

- UIs with synchronized maps, video, and charts

- performance optimization by profiling and, if required, rewriting specific parts in C++


SEEKING WORK | Remote, based in Slovenia (UTC+1)

Full-stack software engineer

Keywords: React, TypeScript, Flask, Python, PHP, Symfony, WebGL, D3, WebRTC, AWS, Docker, Git

Contacts:

[email protected]

https://github.com/drola/

https://www.linkedin.com/in/matja%C5%BE-drolc-aa63213a/

https://drola.si/

Past projects include:

- managing full software lifecycle, including planning, coding and deployment on cloud (AWS) or on-premises (Docker, VMs, bare metal)

- video: transcoding and delivery of a video archive to web browsers and live streaming with HLS and WebRTC.

- interactive 3D visualization of technical measurements with contextual information (tech stack: WebGL, Three.js, RxJS)

- 2D charts with various twists, including data transfers and rendering with varying levels of detail

- UIs with synchronized maps, video, and charts

- performance optimization by profiling and, if required, rewriting specific parts in C++


SEEKING WORK | Remote, based in Slovenia (UTC+1)

Full-stack software engineer

Keywords: React, TypeScript, Flask, Python, PHP, Symfony, WebGL, D3, WebRTC, AWS, Docker, Git

Contacts:

[email protected]

https://github.com/drola/

https://www.linkedin.com/in/matja%C5%BE-drolc-aa63213a/

https://drola.si/

Past projects include:

- managing full software lifecycle, including planning, coding and deployment on cloud (AWS) or on-premises (Docker, VMs, bare metal)

- video: transcoding and delivery of a video archive to web browsers and live streaming with HLS and WebRTC.

- interactive 3D visualization of technical measurements with contextual information (tech stack: WebGL, Three.js, RxJS)

- 2D charts with various twists, including data transfers and rendering with varying levels of detail

- UIs with synchronized maps, video, and charts

- performance optimization by profiling and, if required, rewriting specific parts in C++


Location: Ljubljana, Slovenia

Remote: Yes

Willing to relocate: No

Technologies: Angular, React, Typescript, Symfony, PHP, Python, Docker, Slack integrations, Shopify integrations, WebRTC, WebAssembly, Rust, AWS (Lambda, CloudFormation, S3, EC2, RDS, CloudWatch, SNS, SQS)

Résumé/CV: https://www.linkedin.com/in/matja%C5%BE-drolc-aa63213a/

Email: [email protected]

Past projects include:

- managing full software lifecycle, including planning, coding and deployment on cloud (AWS) or on-premises (Docker, VMs, bare metal)

- video: transcoding and delivery of a video archive to web browsers and live streaming with HLS and WebRTC.

- interactive 3D visualization of technical measurements with contextual information (tech stack: WebGL, Three.js, RxJS)

- 2D charts with various twists, including data transfers and rendering with varying levels of detail

- UIs with synchronized maps, video, and charts

- performance optimization by profiling and, if required, rewriting specific parts in C++


Did you explore what could be the reason behind this? If it’s about data ownership, try going with self-hosted solutions.


For me it will be a tool, that consolidates and categorizes transactions from from banks, paypal, etc.

They all have slightly different export formats, and it would be neat to have cleaned up transaction data.


SEEKING WORK | Remote only, based in Slovenia (UTC+1)

Full-stack app developer with experience in data-rich apps.

Keywords: Angular, React, TypeScript, Flask, Python, PHP, Symfony, WebGL, D3, WebRTC, AWS, Docker, Git

Contacts:

[email protected]

https://github.com/drola/

https://www.linkedin.com/in/matja%C5%BE-drolc-aa63213a/

https://drola.si/

Past projects include:

- managing full software lifecycle, including planning, coding and deployment on cloud (AWS) or on-premises (Docker, VMs, bare metal)

- video: transcoding and delivery of a video archive to web browsers and live streaming with HLS and WebRTC.

- interactive 3D visualization of technical measurements with contextual information (tech stack: WebGL, Three.js, RxJS)

- 2D charts with various twists, including data transfers and rendering with varying levels of detail

- UIs with synchronized maps, video, and charts

- performance optimization by profiling and, if required, rewriting specific parts in C++


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

Search: