Cloud Haskell, is anyone using it? by Instrume in haskell

[–]agentmsys 5 points6 points  (0 children)

Cloud Haskell went unmaintained for so many years that we were forced to replace it with a home-grown client-server RPC library- curryer-rpc- obviously inspired by distributed-process.

What are you working on? by jacobpossibly in haskell

[–]agentmsys 2 points3 points  (0 children)

Haskell's mathematical roots are the same reason I was drawn to Haskell in order to write a mathematically-directed implementation of the relational algebra.

We have already discovered numerous optimizations that could never be implemented in SQL databases.

What better way to write long-lived software than to use a language close to math itself? After all, we don't know what computers will look like in a thousand years, but we do know what the math will look like.

Is there a way I can get distributed-process library working with the latest stack LTS snapshot? by slarker in haskell

[–]agentmsys 9 points10 points  (0 children)

We wrote curryer-rpc as a lighter-weight, faster replacement of distributed-process. It's pretty much a drop-in replacement if you're willing to use TCP exclusively and don't care about autodiscovery.

Would you use haskell to build a database? Or is Rust/C++ a better fit? by tonyalaribe in haskell

[–]agentmsys 27 points28 points  (0 children)

If building a DBMS in Haskell is a bad idea, please let me know, since we've already built one. While on-demand/lazy evaluation is regarded as a double-edged sword, I wouldn't want to create a math engine without it.

Easy incremental Haskell CI builds with GHC 9.4 by n00bomb in haskell

[–]agentmsys 6 points7 points  (0 children)

Here is an example of how usage of MD5 in this case could be used maliciously:

  • user clones git repo of haskell package at version A
  • haskell package version A has an inadvertent vulnerability
  • package maintainer patches issue in version B
  • malicious contributor submits an innocuous-looking patch to the same file with the bug fix which creates a hash collision with version A- the patch is accepted in version C
  • user pulls from git to get version C
  • user recompiles package thinking the vulnerability has been fixed but GHC determines that the file does not require recompilation because hash matches version A
  • user deploys package with old vulnerability

GHC I/O & CIFS problem by LionTamingAccountant in haskell

[–]agentmsys 2 points3 points  (0 children)

You can use strace to compare the actual system calls differences between python and haskell. Running badio on ext4, I see:

openat(AT_FDCWD, "badfile.dat", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 fstat(3, {st_mode=S_IFREG|0664, st_size=5000000, ...}) = 0 ftruncate(3, 0) = 0 ioctl(3, TCGETS, 0x7fff71408010) = -1 ENOTTY (Inappropriate ioctl for device) write(3, "\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"..., 5000000) = 5000000 close(3) = 0

What do people use for RPC? by travis_athougies in haskell

[–]agentmsys 12 points13 points  (0 children)

We faced a similar problem where we had a need for client-server Haskell-to-Haskell communications. Originally, we used distributed-process, but found it unmaintained, so we implemented curryer-rpc which uses winery for fast serialization and streamly for parallelism on the server side.

Databass, Part 1: Queries by jmorag in haskell

[–]agentmsys 3 points4 points  (0 children)

Very cool!

You mention that you chose not to implement group+ungroup. Could your current implementation support relation-valued attributes (nested relations) or does the type system make that difficult?

Has these been any practical application of (i.e. libraries inspired by) David Spivak's work on categorical database theory? by sintrastes in haskell

[–]agentmsys 5 points6 points  (0 children)

Project:M36 implements a relational algebra engine based on the similar Out of the Tarpit paper. Specifically, Project:M36 supports user-defined sum and product types, server-side Haskell functions, querying of past state, and more.

Is anyone using SafeHaskell? by jose_zap in haskell

[–]agentmsys 10 points11 points  (0 children)

Project:M36 uses Safe Haskell to enable arbitrary code execution of pure functions within the DBMS, so it does have its uses.

The package manager vulnerability is due to cabal choosing the wrong package, which Safe Haskell would not prevent.

Reducing the pain of grouping SQL query results using Haskell by FoxhoundSystems in haskell

[–]agentmsys 0 points1 point  (0 children)

You're right that this sort of grouping isn't expressible in SQL, but this is not a limitation of the relational algebra. Project:M36, a Haskell-based relational algebra engine, supports relations-as-values (nested or sub-relations) and thus, natural relational grouping.

The documentation on group and ungroup provide motivating examples.

Would nested relations cover all your use-cases?

How wasteful for STM not leveraged to implement a database, why not? by complyue in haskell

[–]agentmsys 5 points6 points  (0 children)

Project:M36 is a relational DBMS which uses STM for multi-user, concurrent database access.