profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/PaulBone/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Paul Bone PaulBone @mozilla Melbourne, Australia http://paul.bone.id.au Mozilla engineer, @PlasmaLang author. Interested in programming language implementation (compilers and runtimes) and parallelism.

PlasmaLang/plasma 141

Plasma Programming Language

proglangdesign/proglangdesign.github.io 63

A website for the #proglangdesign community on freenode

PaulBone/ast2wasm 9

AST to WebAssembly

PaulBone/mfcgi 5

Fast CGI binding for Mercury

PaulBone/protobuf-mercury 5

Google protocol buffers for Mercury

PaulBone/mclibs 2

Open Source Mercury libraries by Mission Critical IT

PaulBone/pbone_thesis 2

My Ph.D. Thesis

PaulBone/arc 1

How to draw an arc

PaulBone/mercury 1

The Mercury logic programming system.

PaulBone/moz-utils 1

Utilities for working at Mozilla

push eventPlasmaLang/plasma

Paul Bone

commit sha 6af7032c7372f000157c6c7400855b13f46aadd7

[rt] Use full runtime checks for string operations Use explicit runtime checks rather than C asserts for these string operations. Otherwise they could be omitted in release builds and we don't want that.

view details

Paul Bone

commit sha 31714b3b1fcfba8f4d87cff43e16a009bb50a023

[compiler] The get_parameter builtin should observe IO not use it

view details

Paul Bone

commit sha c989a5ccb2f02875e008845a8be4751c29a6f6d3

[docs] Document the builtins

view details

push time in 14 hours

issue openedPlasmaLang/plasma

Move some builtins into a hidden? testing module

Some builtins like setenv are likely to change / they were only introduced for testing. Maybe we should put them in some kind of BuiltinTesting namespace.

created time in 14 hours

issue openedPlasmaLang/plasma

Define what happens at the other end of bitshift functions.

The bitshift functions don't specify whether 0s or 1s are introduced at the far end of the numbers. Probably want to add signed/unsigned versions.

created time in a day

issue openedPlasmaLang/plasma

Move some builtin functions like bitshifting into the Builtin namespace

Maybe they should actually belong in a number/bitfield namespace later?

created time in a day

push eventPlasmaLang/plasma

Paul Bone

commit sha 7b7158f233a2e5428f011a9e8ce3da686b83830c

[tests] Always rebuild example programs Changes in the compiler aren't causing these programs to be rebuilt which can cause these tests to fail.

view details

Paul Bone

commit sha 5f215fec276dea3a16b93499bd0492888eaf2965

[tests] Test that readline can run multiple times

view details

Paul Bone

commit sha 1ae2a14990d588d2432e97732741266de185c9a7

[compiler/pre] Add some detail to an exception This detail helped me find a bug.

view details

Paul Bone

commit sha a3cd611847733d76b20543975b63f42e596aa363

[rt] Add some missing OOM checks

view details

Paul Bone

commit sha b5b3a7b35b168ad8b9c174d27dc68f61b3ceb1ac

[compiler,rt] Rename many builtins to have the noun_verb form Most of these builtins are replaced with direct code at code generation time, but some also require renaming the symbol in the runtime builtin module. Fixes #22

view details

push time in 2 days

push eventPlasmaLang/plasma

Paul Bone

commit sha a19ba0efca17d298b026a5d83183ace5f9955648

[compiler] Add StringPos and Char builtin types

view details

Paul Bone

commit sha 3c0f2eaddfc08ed37b2dd6900ff8c758155c2384

[compiler] Add some string related builtin functions These builtin declarations (the definitions are part of the runtime and havn't been written yet) are the minimum required to implement a trim function in Plasma.

view details

Paul Bone

commit sha a1b1aba828975837ec47027db16c6520745b159f

[rt] Implement the C++ operations for the new string builtins

view details

Paul Bone

commit sha 6f646a9ac55fd694f3dd5d79e9a71022b25b9128

[rt] Add definitions for the new builtins in the runtime

view details

Paul Bone

commit sha 4714cdcb10ba0ef23b026adcce163f40465f52d1

[rt] Work around null-termination in PZ format Strings in the PZ format are null-terminated, although that should be fixed (#376), for now ensure we don't count the null-termination byte as part of the length.

view details

Paul Bone

commit sha 831a7e4e0c8229c556ada0dc6ea7b8da6dc72858

[test] Add an example for the new string builtins The new example tests readline and the functions required for strings. Fixes #366

view details

push time in 4 days

issue openedPlasmaLang/plasma

Arrays/strings in PZ format have a tag for each element

It's not necessary to tag the encoding for each element. We'd save a lot of space if we didn't do that.

created time in 4 days

issue openedPlasmaLang/plasma

PZ format null terminates strings

The null termination byte isn't necessary and confuses the length in the PZ format. We can remove it.

created time in 4 days

push eventPlasmaLang/plasma

Paul Bone

commit sha 957fad9fcc6850c1be23af770af3a274191a21db

[compiler/pz] Give two maps convenient type names

view details

Paul Bone

commit sha a68d5185fa1299b8a1e1ad78f6f05918e6920d2f

[compiler/pz] Export type representation maps from pz

view details

Paul Bone

commit sha e4e16f703ddbad123f6b0fc7255bdfb6dae92c8a

[docs] Fix types example so it can be compiled

view details

Paul Bone

commit sha 45342b4b8ae7aa6e74c2a810fab8f58e0ee10603

[compiler/pz] Pretty-print the data representation with --dump-stages

view details

Paul Bone

commit sha 377f7e7a0153d0920e87a6b13d33efc5c8c6db48

Merge data_rep into str * origin/data_rep: [compiler/pz] Pretty-print the data representation with --dump-stages [docs] Fix types example so it can be compiled [compiler/pz] Export type representation maps from pz [compiler/pz] Give two maps convenient type names

view details

push time in 8 days

push eventPaulBone/plasma

Paul Bone

commit sha 957fad9fcc6850c1be23af770af3a274191a21db

[compiler/pz] Give two maps convenient type names

view details

Paul Bone

commit sha a68d5185fa1299b8a1e1ad78f6f05918e6920d2f

[compiler/pz] Export type representation maps from pz

view details

Paul Bone

commit sha e4e16f703ddbad123f6b0fc7255bdfb6dae92c8a

[docs] Fix types example so it can be compiled

view details

Paul Bone

commit sha 45342b4b8ae7aa6e74c2a810fab8f58e0ee10603

[compiler/pz] Pretty-print the data representation with --dump-stages

view details

Paul Bone

commit sha d6587ad041cb52b464fae2d190e396ba44b14c58

[compiler] Dump data representation info as part of --dump-stages * data_rep: [compiler/pz] Pretty-print the data representation with --dump-stages [docs] Fix types example so it can be compiled [compiler/pz] Export type representation maps from pz [compiler/pz] Give two maps convenient type names

view details

push time in 8 days

delete branch PlasmaLang/plasma

delete branch : data_rep

delete time in 8 days

push eventPlasmaLang/plasma

Paul Bone

commit sha 957fad9fcc6850c1be23af770af3a274191a21db

[compiler/pz] Give two maps convenient type names

view details

Paul Bone

commit sha a68d5185fa1299b8a1e1ad78f6f05918e6920d2f

[compiler/pz] Export type representation maps from pz

view details

Paul Bone

commit sha e4e16f703ddbad123f6b0fc7255bdfb6dae92c8a

[docs] Fix types example so it can be compiled

view details

Paul Bone

commit sha 45342b4b8ae7aa6e74c2a810fab8f58e0ee10603

[compiler/pz] Pretty-print the data representation with --dump-stages

view details

Paul Bone

commit sha d6587ad041cb52b464fae2d190e396ba44b14c58

[compiler] Dump data representation info as part of --dump-stages * data_rep: [compiler/pz] Pretty-print the data representation with --dump-stages [docs] Fix types example so it can be compiled [compiler/pz] Export type representation maps from pz [compiler/pz] Give two maps convenient type names

view details

push time in 8 days

push eventPlasmaLang/plasma

Paul Bone

commit sha 45342b4b8ae7aa6e74c2a810fab8f58e0ee10603

[compiler/pz] Pretty-print the data representation with --dump-stages

view details

push time in 8 days

create barnchPlasmaLang/plasma

branch : data_rep

created branch time in 8 days

push eventPaulBone/plasma-website

Slavfox

commit sha 0483b6527214a5d60caa30fdcbd35571d96d4b24

Fix legend icon sizing

view details

Paul Bone

commit sha 141e4792b0421269b17164395de5248b66e39fc1

Merge pull request #19 from slavfox/17-fix-legend-icon-sizing Fix legend icon sizing

view details

dependabot[bot]

commit sha 5cd623dcdd1afbaa41c8e92e7208527cf56a65ba

Bump addressable from 2.7.0 to 2.8.0 Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>

view details

Paul Bone

commit sha f128d7be99a6aa44f023dade07e992defbd19c41

Merge pull request #20 from PlasmaLang/dependabot/bundler/addressable-2.8.0 Bump addressable from 2.7.0 to 2.8.0

view details

push time in 10 days

issue closedPlasmaLang/plasma-website

The roadmap page could be nicer to screen-readers.

The screen reader reads the work-in-progress symbol as "whip". I'd prefer 'in-progress" and it should drop the word "status" from the beginning of each of these icons. does "TODO" always sound like "Toto" (the band of the small dog) in a screen reader?

closed time in 10 days

PaulBone

issue commentPlasmaLang/plasma-website

The roadmap page could be nicer to screen-readers.

This was done earlier.

PaulBone

comment created time in 10 days

push eventPlasmaLang/plasma-website

dependabot[bot]

commit sha 5cd623dcdd1afbaa41c8e92e7208527cf56a65ba

Bump addressable from 2.7.0 to 2.8.0 Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/sporkmonger/addressable/releases) - [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md) - [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0) --- updated-dependencies: - dependency-name: addressable dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>

view details

Paul Bone

commit sha f128d7be99a6aa44f023dade07e992defbd19c41

Merge pull request #20 from PlasmaLang/dependabot/bundler/addressable-2.8.0 Bump addressable from 2.7.0 to 2.8.0

view details

push time in 10 days

PR merged PlasmaLang/plasma-website

Bump addressable from 2.7.0 to 2.8.0 dependencies

Bumps addressable from 2.7.0 to 2.8.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md">addressable's changelog</a>.</em></p> <blockquote> <h1>Addressable 2.8.0</h1> <ul> <li>fixes ReDoS vulnerability in Addressable::Template#match</li> <li>no longer replaces <code>+</code> with spaces in queries for non-http(s) schemes</li> <li>fixed encoding ipv6 literals</li> <li>the <code>:compacted</code> flag for <code>normalized_query</code> now dedupes parameters</li> <li>fix broken <code>escape_component</code> alias</li> <li>dropping support for Ruby 2.0 and 2.1</li> <li>adding Ruby 3.0 compatibility for development tasks</li> <li>drop support for <code>rack-mount</code> and remove Addressable::Template#generate</li> <li>performance improvements</li> <li>switch CI/CD to GitHub Actions</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sporkmonger/addressable/commit/6469a232c0f1892809ff66737370c765d574e16c"><code>6469a23</code></a> Updating gemspec again</li> <li><a href="https://github.com/sporkmonger/addressable/commit/24336385de0261571b3adaad0431459edb420c79"><code>2433638</code></a> Merge branch 'main' of github.com:sporkmonger/addressable into main</li> <li><a href="https://github.com/sporkmonger/addressable/commit/e9c76b889789c75d7073c17b0ab557635d3f6704"><code>e9c76b8</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sporkmonger/addressable/issues/378">#378</a> from ashmaroli/flat-map</li> <li><a href="https://github.com/sporkmonger/addressable/commit/56c5cf7ece9223ff4240e07078cc26d3adbbbd30"><code>56c5cf7</code></a> Update the gemspec</li> <li><a href="https://github.com/sporkmonger/addressable/commit/c1fed1ca0a44c448e74d761fd44ed94869199807"><code>c1fed1c</code></a> Require a non-vulnerable rake</li> <li><a href="https://github.com/sporkmonger/addressable/commit/0d8a3127e35886ce9284810a7f2438bff6b43cbc"><code>0d8a312</code></a> Adding note about ReDoS vulnerability</li> <li><a href="https://github.com/sporkmonger/addressable/commit/89c76130ce255c601f642a018cb5fb5a80e679a7"><code>89c7613</code></a> Merge branch 'template-regexp' into main</li> <li><a href="https://github.com/sporkmonger/addressable/commit/cf8884f815c96b646c796f707bf768cf6eb65543"><code>cf8884f</code></a> Note about alias fix</li> <li><a href="https://github.com/sporkmonger/addressable/commit/bb03f7112e8e478240a0f96e1cc7428159b41586"><code>bb03f71</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/sporkmonger/addressable/issues/371">#371</a> from charleystran/add_missing_encode_component_doc_entry</li> <li><a href="https://github.com/sporkmonger/addressable/commit/6d1d8094a66cbf932ecf69db6850bc9edaf86de0"><code>6d1d809</code></a> Adding note about :compacted normalization</li> <li>Additional commits viewable in <a href="https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+1 -1

0 comment

1 changed file

dependabot[bot]

pr closed time in 10 days

PullRequestReviewEvent

push eventPlasmaLang/plasma

Paul Bone

commit sha c150af297804cadaca9bf0e846485e86afa412f4

[rt] Add a specialisation for empty strings

view details

push time in 11 days

push eventPlasmaLang/plasma

Paul Bone

commit sha f194778d579764ae0cb23d0b08669f98bac517ef

[compiler/pz] Break make_proc_and_struct_ids until multiple peices

view details

Paul Bone

commit sha b788904c229716304a8de18c7022822e4ec047e2

[compiler/pz] Only generate references referenced imports Plasma modules don't use all the builtins and other imported symbols, we can make PZ bytecodes smaller by not generating references to all unused builtins. This also lets us create builtins in a more piecemeal way, creating them in the compiler and runtime before writing examples that use them.

view details

Paul Bone

commit sha f1242edc5a5ef91c3af2381e4909657383f63e0b

[compiler/core] Mark unused imports as unused We could do a full dead code analysis pass, but don't, we want to generate all the code actually in a module since that helps with testing. In the future we can do dead code elimination, instead we just mark imports that are unused as unused.

view details

push time in 13 days

push eventPlasmaLang/plasma

Paul Bone

commit sha f85508684e249c76d2d39820910de77b46c37569

[compiler/pre] Include variables used in the condition of if statements Variables used in the condition of an if statements were not included in the used set of the statement itself. Which could cause closures to be miscalculated leading to type checking and code generation bugs. Fixes #375

view details

Paul Bone

commit sha 0f197c1ee5b2932f5da1e77a9dbb5131a495354f

[compiler/pre] Rename a symbol Rename a symbol to use the correct terminology. It looks like I didn't remember the correct name when I named it the first time.

view details

Paul Bone

commit sha bc4c8df39922b3ba69be1ea8c3453a03b769522b

[merge] merge 'type_bug' into str * type_bug: [compiler/pre] Rename a symbol [compiler/pre] Include variables used in the condition of if statements

view details

push time in 14 days

push eventPaulBone/plasma

Paul Bone

commit sha f85508684e249c76d2d39820910de77b46c37569

[compiler/pre] Include variables used in the condition of if statements Variables used in the condition of an if statements were not included in the used set of the statement itself. Which could cause closures to be miscalculated leading to type checking and code generation bugs. Fixes #375

view details

Paul Bone

commit sha 0f197c1ee5b2932f5da1e77a9dbb5131a495354f

[compiler/pre] Rename a symbol Rename a symbol to use the correct terminology. It looks like I didn't remember the correct name when I named it the first time.

view details

Paul Bone

commit sha 3dfe39544cf419157e1f784519f8c223275f5783

[merge] Fix a compiler bug affecting generation of closures * type_bug: [compiler/pre] Rename a symbol [compiler/pre] Include variables used in the condition of if statements

view details

push time in 14 days

push eventPlasmaLang/plasma

Paul Bone

commit sha f85508684e249c76d2d39820910de77b46c37569

[compiler/pre] Include variables used in the condition of if statements Variables used in the condition of an if statements were not included in the used set of the statement itself. Which could cause closures to be miscalculated leading to type checking and code generation bugs. Fixes #375

view details

Paul Bone

commit sha 0f197c1ee5b2932f5da1e77a9dbb5131a495354f

[compiler/pre] Rename a symbol Rename a symbol to use the correct terminology. It looks like I didn't remember the correct name when I named it the first time.

view details

Paul Bone

commit sha 3dfe39544cf419157e1f784519f8c223275f5783

[merge] Fix a compiler bug affecting generation of closures * type_bug: [compiler/pre] Rename a symbol [compiler/pre] Include variables used in the condition of if statements

view details

push time in 14 days

issue closedPlasmaLang/plasma

Type errors in some if conditions arn't detected.

type C = C
type SP = SP

func sp_is_a(sp : SP) -> Bool { return False }

// A mistaken type here.
func sp_to_c(sp : SP) -> SP { return SP }

func find_last(test : func(C) -> Bool,
               string : String) {
    func loop(pos : SP) -> SP {
        if sp_is_a(pos) {
            return pos
            // Is not detected as an error here.
        } else if test(sp_to_c(pos)) {
            return pos
        } else {
            return pos
        }
    }
}

It seems to need that the if is not the first one in the chain and that it is within a closure and the test function is one of the closed-over values.

There's a second problem where the corrected form of this program crashes the code generator.

closed time in 14 days

PaulBone

issue openedPlasmaLang/plasma

Type errors in some if conditions arn't detected.

type C = C
type SP = SP

func sp_is_a(sp : SP) -> Bool { return False }

// A mistaken type here.
func sp_to_c(sp : SP) -> SP { return SP }

func find_last(test : func(C) -> Bool,
               string : String) {
    func loop(pos : SP) -> SP {
        if sp_is_a(pos) {
            return pos
            // Is not detected as an error here.
        } else if test(sp_to_c(pos)) {
            return pos
        } else {
            return pos
        }
    }
}

It seems to need that the if is not the first one in the chain and that it is within a closure and the test function is one of the closed-over values.

There's a second problem where the corrected form of this program crashes the code generator.

created time in 15 days

issue openedPlasmaLang/plasma

(dis-)Equality operators don't work on user defined types

You cannot currently use == or != on user defined types, only integers.

created time in 15 days

push eventPlasmaLang/plasma

Paul Bone

commit sha 2fa222bc2069d348d5ab1a7c631ce47e075fb5c1

[compiler] The captured list for builtins is always empty

view details

push time in 15 days