Announcing the official release of Fedora Asahi Remix 39!
Props to the Asahi Linux project and the Fedora Asahi SIG for all their work in providing a stable Linux experience on Apple Silicon.
* All MacBook Air, MacBook Pro, Mac Mini, Mac Studio and iMac systems with M1 and M2 chips are supported
* KDE Plasma is the default desktop environment
* Wayland enabled by default
* The speakers work, baby!
Announcement: https://fedoramagazine.org/introducing-fedora-asahi-remix-39/
Download: https://asahilinux.org/fedora/
The #Lean4 project to formalize the proof of the Polynomial Freiman-Ruzsa conjecture has succeeded after three weeks, with the dependency graph completely covered in a lovely shade of green: https://teorth.github.io/pfr/blueprint/dep_graph_document.html , and the Lean compiler reporting that the conjecture follows from standard axioms.
More discussion on the project can be found at https://leanprover.zulipchat.com/#narrow/stream/412902-Polynomial-Freiman-Ruzsa-conjecture/topic/Project.20completed!.20.20Thoughts.20and.20reflections.3F
ghc wasm backend jsffi has finally been implemented! the rest is source notes as well as user-facing documentation. not sending a #haskell discourse thread yet, but for the curious eyes, here's what's supported so far (and also an ama thread):
1. calling sync js function
foreign import javascript unsafe "console.log($1)" js_log :: JSVal -> IO ()
js src text can be any valid js expr or statements, using $1 etc to refer to the haskell arguments. JSVals are first class haskell values and garbage collected.
2. calling async js function
foreign import javascript "fetch($1)" js_fetch :: JSString -> IO JSVal
await is supported in js src text. calling it initiates the side effect immediately, and returns a thunk that only blocks on promise resolution when forced, allowing concurrency without even needing to fork haskell threads. promise rejections are captured as haskell exceptions.
3. js callback -> haskell function
foreign import javascript "dynamic" js2hs :: JSVal -> Arg1 -> Arg2 -> Result
pretty much same thing like "dynamic" ccalls, though we use JSVal to represent a js callback instead of FunPtr.
4. hs function -> js callback
foreign import javascript "wrapper" hs2hs :: (Arg1 -> Arg2 -> Result) -> IO JSVal
yup, this converts any haskell function closure to a js callback that you can pass to 3rd party frameworks. it's garbage collected on the js side as well, the haskell closure will be dropped if the callback is unreachable in js later.
5. foreign exports
foreign export javascript "js_func_name" hs_func_name :: Arg1 -> Arg2 -> Result
this will end up as a wasm export named "js_func_name" directly callable in js, and it returns a promise of the final result that can be awaited.
the hardest part of all the above work is concurrency & re-entrancy: calling async js should be cheap, should not block the runtime, should play well with existing threading model in haskell. and hs can call into js that calls back into hs, indefinitely. i'll write up more detailed explanation on how this is delivered
RT GyDi
Git可以这样根据不同的目录去区分git配置,这样就可以对不同的项目设置不同的全局user email了
I'm excited to announce a new "prefaculty" position working with the type systems team at Jane Street on the OCaml compiler!
I think this should be an exciting position for someone who is starting off their academic career and is looking to learn more about large scale practical applications of type systems, and to build longer term research connections.
Please retoot!
https://www.janestreet.com/join-jane-street/programs-and-events/visiting-researcher-prefaculty/
Unfortunately due to an upcoming #furlough, I will need to look for other work (full-time or otherwise). If you or someone you know need a senior #frontend / full-stack dev, in #EU (I live in Finland, remote work), please boost, ping, slide into DMs or email me (in CV).
I put together an image with some tech. info and what I do in my free time, CV posted below with link as well. Requirements and preferences in 🧵
https://joshuastrobl.com/CV.pdf
Boosts greatly appreciated ❤️
It is time for #Solus to embark on a new voyage. The journey ahead is incredibly exciting for users and contributors alike - the very foundations of our project, the ideas that held us together over the years, are finally coming to fruition.
Read more at https://getsol.us/2023/04/18/a-new-voyage
Hey folks, Josh here. Long time no see.
We got a new post up on Reddit and will have a blog post forthcoming on Tuesday, with organizational structure changes, plans for #Solus 4.x, Solus 5, and more.
https://www.reddit.com/r/SolusProject/comments/12ndrvt/righting_the_ship/
history = (λx. x x) (λx. x x)
When life gives you lemons, don't make lemonade. Make life take the lemons back! Get mad! I don't want your damn lemons, what the heck am I supposed to do with these?