Commit graph

1750 commits

Author SHA1 Message Date
Vincent Ambo
6468845255 chore: Change file layout to match repository instead of gist 2019-08-28 14:55:53 +01:00
Vincent Ambo
34a5917981 test: Add test for pattern matching on sum types 2019-08-28 14:37:00 +01:00
Vincent Ambo
cb45536124 test: Add a test to check that all types match the 'type'-type 2019-08-28 14:37:00 +01:00
Vincent Ambo
b622bcef7d feat: Introduce composable type errors and type parameter checking
This refactoring moves the type definitions into a recursively
evaluated attribute set, which makes it possibe to refer to types in
the definitions of other types.

This functionality is used to type-check some of the type parameters
passed in to other types. This is not yet done for all higher-order
types because the evaluation semantics of Nix make it less useful for
some cases.

Further the definition of a type itself is now a stricter
representation that works for all types except typed functions, which
allows for composable error messages.
2019-08-28 14:36:58 +01:00
Vincent Ambo
f6635fec98 feat: Add rough initial version of sum types
Sum types are represented as attribute sets with a single key in them.
2019-08-28 14:36:55 +01:00
Vincent Ambo
ef4ded7b98 docs: Add defun to README 2019-08-28 14:36:50 +01:00
Vincent Ambo
5949663fcd feat: Implement support for typing functions
The defun helper takes a type signature and a function and makes a
typed version. Because we can.
2019-08-28 14:36:47 +01:00
Vincent Ambo
1da22249bd test: Add some simple tests for type-checks
Does not currently test check failures, which makes it sort of not as
useful as you'd think.
2019-08-28 14:36:43 +01:00
Vincent Ambo
08116dbf51 chore: Add Google's copyright header 2019-08-28 14:36:39 +01:00
Vincent Ambo
bc130254bc docs: Update struct screenshot in README 2019-08-28 14:36:36 +01:00
Vincent Ambo
ca0cf11ca9 feat: Improved error message for missing struct fields 2019-08-28 14:36:33 +01:00
Vincent Ambo
4ebc069a3f docs: Add enum screenshot to README 2019-08-28 14:36:29 +01:00
Vincent Ambo
661e09daac feat: Add enum support 2019-08-28 14:36:25 +01:00
Vincent Ambo
2e576e10ab refactor: Gain back a few more lines 2019-08-28 14:36:20 +01:00
Vincent Ambo
2acdbb5009 refactor: Drop back to below 100 lines :) 2019-08-28 14:36:14 +01:00
Vincent Ambo
76f9b1638c feat: Add function type
It's not currently possible to check arguments for curried functions,
but there might be something on the horizon for attribute set
functions.
2019-08-28 14:36:11 +01:00
Vincent Ambo
103e0b4d25 feat: Add derivation type 2019-08-28 14:36:08 +01:00
Vincent Ambo
cb0d07fa30 docs: Fix image links (relative is not supported in gists) 2019-08-28 14:36:00 +01:00
Vincent Ambo
199254ba7a chore: Move screenshots into the gist 2019-08-28 14:35:56 +01:00
Vincent Ambo
040b719570 feat: Support better error messages for list/attrs element checks 2019-08-28 14:35:53 +01:00
Vincent Ambo
fe33a82a07 feat: Initial check-in of type system sketch 2019-08-28 14:35:41 +01:00
Vincent Ambo
a58af3e371 feat(k8s): Configure HTTPS ingress for the blog
Uses Google-managed certificates and an Ingress resource to set up an
HTTPS load-balancer.

This probably won't be the final version as the GKE Ingress is very
limited and can not do things like redirect URLs, which I need to
decommission the old setup.
2019-08-27 12:44:37 +01:00
Vincent Ambo
cae99692de feat(k8s): Add Google managed TLS certificates
Introduces certificates for tazj.in & www.tazj.in.
2019-08-27 12:43:55 +01:00
Vincent Ambo
593e96da60 chore(tazblog): Clean up unused dependencies 2019-08-25 23:21:26 +01:00
Vincent Ambo
1247848d76 refactor(tazblog): Implement HLint lints in all files 2019-08-25 23:07:43 +01:00
Vincent Ambo
561ed1fbbb chore(tazblog): Remove i18n features
The blog has been English only for a few years. Old entries that
survived the migration to DNS will still be accessible.
2019-08-25 22:53:38 +01:00
Vincent Ambo
094aafecdd chore(tazblog): Remove 'read more' feature 2019-08-25 20:22:57 +01:00
Vincent Ambo
6450347bf1 chore(tools): Remove ormolu from tools
The Ormolu derivation is too large to be instantiated on-demand. I've
resorted to installing this tool into my profile instead.
2019-08-25 20:17:03 +01:00
Vincent Ambo
1747df418e chore(tazblog): Format source files with ormolu
Ormolu's formatting is quite annoying (it uses a lot of unnecessary
vertical space and doesn't align elements), but I can't be bothered to
do manual formatting - especially because whatever formatting
haskell-mode in Emacs produces seems to depend on an opaque state
machine or something.
2019-08-25 20:15:53 +01:00
Vincent Ambo
2fdc872228 feat(build): Add Terraform from unstable channel 2019-08-25 17:55:08 +01:00
Vincent Ambo
155f17173b chore(gcp): Enable Cloud DNS service 2019-08-25 17:47:34 +01:00
Vincent Ambo
d3f8dd15f3 fix(gemma): Almost fix Gemma build by porting an old Elm
This pulls in an old version of Elm from NixOS 17.09 which can still
build the Elm code in Gemma.

However, the Common Lisp build is now broken in some other way.
2019-08-23 15:28:23 +01:00
Vincent Ambo
31e83b33cc chore(k8s): More tazblog replicas 2019-08-23 14:13:13 +01:00
Vincent Ambo
be074c6085 refactor(tazblog): Move blog configuration to envvars
The port and resource directory are now specified via environment
variables and a wrapper script is created by Nix that sets the
resource path and so on correctly.
2019-08-23 12:03:17 +01:00
Vincent Ambo
fb930e4db7 fix(tazblog): Remove debug trace 2019-08-23 11:42:23 +01:00
Vincent Ambo
4f88851971 fix(blog_cli): Quote JSON output for post dates 2019-08-23 11:24:03 +01:00
Vincent Ambo
57059fec2b feat(blog_cli): Add flag to set post date and serialise as date only 2019-08-23 10:57:15 +01:00
Vincent Ambo
bd47122afb chore(blog): Minor changes to integrate DNS based backend 2019-08-22 18:58:11 +01:00
Vincent Ambo
c5ef3e01b2 feat(tazblog): Implement entry fetching from DNS
Not all error cases are properly handled yet, stay tuned.
2019-08-22 18:57:49 +01:00
Vincent Ambo
f298bdd183 feat(tazblog): Add a Nix shell expression that includes GHC with deps 2019-08-21 12:17:03 +01:00
Vincent Ambo
008be5c2e1 refactor(tazblog): Directly instantiate Resolver when launching
Caching behaviour is tied to the resolver.
2019-08-21 11:07:25 +01:00
Vincent Ambo
bf2efeba2d chore(tazblog): Introduce dependency on 'dns' 2019-08-21 11:07:09 +01:00
Vincent Ambo
13b0204c03 chore(tazblog): Introduce dependency on 'cache' 2019-08-20 07:09:16 +01:00
Vincent Ambo
b856648127 feat(tools): Introduce ormolu for formatting Haskell code 2019-08-20 00:26:54 +01:00
Vincent Ambo
11fcf62297 chore(tazblog): Replace BlogDB with stubs for DNS-based storage
Removes acid-state specific code and the former BlogDB module, in its
stead the new BlogStorage module contains stubs for the functions that
will be filled in with DNS-based storage.

This code is unformatted and will not currently serve a working blog.
2019-08-20 00:17:23 +01:00
Vincent Ambo
1d5b53abf8 chore(tools/blog_cli): Shorten metadata key names
Every character counts because I want to keep metadata below 255
bytes.
2019-08-19 19:11:32 +01:00
Vincent Ambo
d5710db900 refactor(tools/blog_cli): More sensible chunk encoding as records
Instead of many rrdatas in one record, make many records!
2019-08-19 17:51:29 +01:00
Vincent Ambo
2a16740445 feat(tools): Add a horrifying tool to write blog posts into DNS 2019-08-19 16:59:55 +01:00
Vincent Ambo
28a9c01d36 feat(infra/k8s): Add in-cluster tazblog deployment via Nixery
First deployment actually using a Nixery image and `gitHEAD`.

This does not actually serve a working blog for various reasons. The
current storage mechanism (acid-state) isn't really appropriate
anymore and I'll need to change that soon.
2019-08-19 03:10:53 +01:00
Vincent Ambo
a4ef595fef chore(infra/k8s): Bump Nixery image to Cachix-enabled one 2019-08-19 02:43:42 +01:00