brightball
Codeship just published my latest blog entry:
Please give it a read and let me know if there’s any areas of concern. I do have the ability to request edits if need be.
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
Hey there,
It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Quite interesting article Google brought me. Didn’t find any mentions about it here.
What do you think in general? Would you use togethe...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Since we have deprecated our Erlang sections (as we have dedicated Erlang Forums now) let’s add this thread for those who’d like to post ...
New
:warning: Security advisory: Decimal DoS vulnerability
A vulnerability has been published for decimal where very large exponents can cau...
New
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security










First Post!- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
sztosz
I liked it very much, I skimmed some parts, but it’s rather informative and I don’t have the feeling it’s biased.
Most Liked
josevalim
Hrm, what do you mean by this? Sure, they are not part of OTP, but they are OTP compliant processes. You can put them in a supervision tree as easy (or as hard) as a GenServer. And they are definitely more than abstractions over
spawn. For example, an Agent is a GenServer.OvermindDL1
Looks nice, reading it.
Comments as I read it. ^.^
Well it ‘is’ available, just not in the form they expect as you carry state along a TCO or so. Perhaps word it as
Due to immutable data, common imperative operations such as for-loops aren’t available in the usual imperative forms because there is no mutation of a variable.or so?Many already find recursion comfortable, if not more comfortable than iteration, so this sentence seems a little accusatory to me. ^.^
A hash? Is this referencing perl? o.O? I think you mean
map, also internally it is not a hash-map last time I saw the implementation, so even describing it as a hash-map would not be accurate.Also, your example, even though you were speaking of 'hash’es is not a map, it is a compilation error as it looks like you are mixing tuples and key/value referencing (which you cannot do in tuples). Also, the
IO.puts otherform I think is deprecated, you should have parenthesis likeIO.puts(other).Not entirely. Go scopes out so you could have different area’s in different interface ‘trees’ as well as they are turned into an, as I recall,
log(N)dispatcher to the correct implementation if the interface cannot be resolved or to built-in function pointers on the interface otherwise, it might be more accurate to change thearea(g)to be something likeg.__dispatchTable[area]()or something like that as pseudo-code.Well there are libraries to handle that, or you could do it yourself via macro’s, but it is doable to reuse patterns and quite effective as well. ^.^
I… do not think so? As I recall:
Elixir is thus a Strong Dynamically typed language, but your above description sounds like Static typing. Elixir, however, does have dialyzer, which can do a form of Success typing over the calls, but it is not static nor can the BEAM optimize based on that information nor can the compiler catch type errors.
In this section you describe how cooperative scheduling works with Go, but do not go into near as much detail about how preemptive (not prescheduling) in Elixir works. Also it is preemptive, not prescheduling.
The beam has similar calls as well, including ones that can entirely reset the operating memory of a process as well (
hibernate) and operate only on the next passed in parameters and suchNo they don’t, you can spawn anonymous functions too, your example even shows that. ^.^
Technically Erlang calls it the Process Mailbox I’ve seen everywhere.
Actually
TaskandAgentare not OTP parts, they do not even fit into the OTP supervision tree unless you do it manually. Those are more simple abstractions overspawn, not really parts of OTP I’d personally say.Ehhh, not unlimited, rather the more full a mailbox the more the system pauses things trying to put messages into the mailbox of that process, so as a process gets overwhelmed with messages it slows scheduling everything else trying to put ‘into’ that process (but none others) as it tries to catch up. And the Task thing is something different entirely, maybe should be removed?
Might also be good to mention Elixir has a GC but it only runs over a single process (not pausing anything else unlike Go’s GC) and only when the process starts getting large, else no GC may ever be run on a process at all.
I’m getting busy again, will keep reviewing later if I remember (or poke me).
brightball
I seem to remember hearing it several different places. The most recent that I found was from Joe Armstrong towards the end of this post though:
http://joearms.github.io/2013/05/31/a-week-with-elixir.html
Last Post!
mkunikow
interesting podcast