With the recent release of PM 0.4 and the positive reception to my PM presentation at CIUK2023, it seems like a good time to bring back the PM blog after a long hiatus. Another good reason for its resurrection is that I feel that I now have built the basic semantics of the language into something like a coherent whole, giving me something concrete to write about.
There have been a few major changes to the language since my last blog entry. The main syntactic change has been the shift from keyword-delimited control statements to curly-brackets. This is not a statement on my part as to the merits of the two approaches, I am generally agnostic in this debate which can border on the religious. It was simply that with the way that the language was developing, the keyword approach was getting cumbersome – frequently used constructs were taking up far to much space and impeding readability. PM now uses curly brackets to terminate statements and semicolons to separate (and optionally terminate) them.
if x<0 {
print("x is negative");
x=-x
}
if x<0 {
print("x is negative");
x=-x
}
if x<0 : x=-x
partial | The object is defined in some of the strands in the current parallel context, but not necessarily all. The object may have different values in different strands. |
coherent | The object is defined in all strands in the current parallel context with values that may differ between strands but are synchronised with other stands in that context. |
chan | The object is defined in all strands in the current parallel context, with values that may differ between strands. Values may be communicated between strands in the current parallel context. |
uniform | The object is defined in all strands in the current parallel context and has exactly the same value in all of these strands. |
shared | The object is defined in the directly enclosing parallel context. |
Comments
Post a Comment