Got the opportunity to go "under the hood" and provide some behind the scenes on how and why we have evolved AL over the years towards a more performant language.
youtu.be/1xdpUmeun-s
If you are interested in writing performant AL code for Business Central, this is a great opportunity.
You get a three for one deal here! AL code, compiler, and runtime experts in one session.
As always when I'm involved, internals included!
Wednesday at 14:00.
#msdyn365bc
I would argue the perfect last session for your #BCTechDays conference is to join Torben Meyhoff and I, for our session: Tri-State Locking: Reducing locking in the runtime
We will explain AL's locking scheme in-depth and explore recent improvements in the area.
Have you ever wondered how to swiftly delete data in #msdyn365bc? Most of the time, letting the runtime optimize is the way to go.
In my latest blog post we explore how customizations can bring the performance down + an informal reveal of AlterKey :)
bcinternals.com/posts/deleti…
. @bertverbeek Submitted a PR
github.com/microsoft/Busines…
My analysis shows it as the classic problems of invalidating the resultset enumerator, which leads to repeated creation of the SQL statement.
I wrote about it on my blog and explained why it happens:
bcinternals.com/posts/on-rec…
In the #msdyn365bc 2023 wave 2 release notes we talk about reducing locks, the docs are rather vague on the how.
I want to rectify that with my latest blog post, which goes in-depth with how the runtime will implicitly take locks for reads:
bcinternals.com/posts/tri-st…
Was great to present with @NikolaKukrika at #BCTechDays. Especially cool to have a overflowing room of people eager to learn about locking in #MSDyn365BC.
Thanks everyone for coming! And remember to provide feedback so we also can learn :)
Mads Gram retweeted
Join us next week at #BCTechDays in #Antwerp. All good things must come to an end. We present you the final sessions. Curious about the closing? #MsDyn365BC
At Hamburg we/I received great questions about AL and #MSDyn365BC broadly. At least two of the questions seemed like a good writing prompt, so here is a new blog post covering Bulk Inserts and RecordRef internals:
bcinternals.com/posts/direct…
A fundamental concept in Business Central is (implicit) transactions, they are often taken for granted, but essential. Furthermore, I have found that very few AL developers understand the rules for implicit locking in AL, so here it is:
bcinternals.com/posts/transa…
#msdyn365bc
In my latest blog post we will explore micro benchmarking in AL and all the caveats and annoyances it brings.
Hopefully, it will spare the reader a bunch of mistakes since I already tackled them.
bcinternals.com/posts/benchm…
Will be at #DOKNordic presenting the "What's new in the server and database". Tons of great stuff, some of it I did and can explain in great detail.
Looking forward to meeting all the developers I write a platform for.
#msdyn365bc
Before continuing our series on Partial Records for performance, we must take a quick detour exploring the pitfalls of Partial Records. Here focusing on what goes wrong and thereby what not to do when using Partial Records. #msdyn365bc.
bcinternals.com/posts/partia…
With my blog's second installment we will explore the internals of a recent addition to #msdyn365bc: Partial Records. History included.
One post wasn't enough to truly explore the matter, so in the near future we will revisit the topic.
bcinternals.com/posts/partia…
Regarding this excellent video from @eHougaard youtube.com/watch?v=315SuCUK…
I should remind everyone that it might end up hiding errors from you, f.e. one might get a duplicate key exception on a subsequent operation that isn't an even an insert.
My blog covering the internals of #msdyn365bc has finally sprung to life. It starts out covering the most fundamental data type in BC: Records.
bcinternals.com/posts/on-rec…
I would all of your feedback :) the source code for the blog can be found here:
github.com/phduck/ALBlog_go
#BCALhelp Has anyone written a statistics or benchmarking library in AL? Or do I have to write them?
My endgame is to have something like #BenchmarkDotNet just for AL.








