Browse Source

Release-notes.py script to generate release notes and add contributors to authors.md

pull/4/head
Jay Graber 8 years ago
parent
commit
3935f9dae6
  1. 38
      doc/authors.md
  2. 9
      doc/release-notes/release-notes-0.11.2.z6.md
  3. 22
      doc/release-notes/release-notes-0.11.2.z9.md
  4. 6
      doc/release-notes/release-notes-1.0.2.md
  5. 99
      zcutil/release-notes.py

38
doc/authors.md

@ -0,0 +1,38 @@
Zcash Contributors
==================
Jack Grigg (264)
Simon Liu (191)
Sean Bowe (162)
Taylor Hornby (65)
Daira Hopwood (62)
Kevin Gallagher (38)
Jay Graber (28)
Nathan Wilcox (10)
Wladimir J. van der Laan (9)
Pieter Wuille (8)
Cory Fields (7)
ITH4Coinomia (4)
David Mercer (4)
4ZEC (4)
Patrick Strateman (3)
Paige Peterson (3)
MarcoFalke (3)
Alfie John (3)
aniemerg (2)
Robert C. Seacord (2)
Joe Turgeon (2)
Gregory Maxwell (2)
kazcw (1)
fanquake (1)
Tom Ritter (1)
S. Matthew English (1)
Philip Kaufmann (1)
Louis Nyffenegger (1)
Lars-Magnus Skog (1)
Gaurav Rana (1)
Ethan Heilman (1)
Chirag Davé (1)
Cameron Boehmer (1)
Bryan Stitt (1)
Alex (1)

9
doc/release-notes/release-notes-0.11.2.z6.md

@ -1,19 +1,18 @@
Jack Grigg:
Jack Grigg (4):
Equihash: Only compare the first n/(k+1) bits when sorting.
Randomise the nonce in the block header.
Clear mempool before using it for benchmark test, fix parameter name.
Fix memory leak in large tx benchmark.
Sean Bowe:
Sean Bowe (5):
Increase block size to 2MB and update performance test.
Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit.
Remove the mainnet checkpoints.
Fix performance test for block verification.
Make `validatelargetx` test more accurate.
Taylor Hornby:
Taylor Hornby (1):
Add example mock test of CheckTransaction.
aniemerg:
aniemerg (1):
Suppress Libsnark Debugging Info.

22
doc/release-notes/release-notes-0.11.2.z9.md

@ -1,5 +1,4 @@
Sean Bowe:
Sean Bowe (6):
Change memo field size and relocate `ciphertexts` field of JoinSplit description.
Implement zkSNARK compression.
Perform curve parameter initialization at start of gtest suite.
@ -7,7 +6,7 @@ Sean Bowe:
Enable MONTGOMERY_OUTPUT everywhere.
Update proving/verifying keys.
Jack Grigg:
Jack Grigg (11):
Add support for spending keys to the basic key store.
Merge AddSpendingKeyPaymentAddress into AddSpendingKey to simplify API.
Add methods for byte array expansion and compression.
@ -20,7 +19,7 @@ Jack Grigg:
Add separate lock for SpendingKey key store operations.
Test conversion between solution indices and minimal representation.
Daira Hopwood:
Daira Hopwood (6):
Move bigint arithmetic implementations to libsnark.
Add mostly-static checks on consistency of Equihash parameters, MAX_HEADERS_RESULTS, and MAX_PROTOCOL_MESSAGE_LENGTH.
Change some asserts in equihash.cpp to be static.
@ -28,30 +27,29 @@ Daira Hopwood:
Increment version numbers for z9 release.
Add these release notes for z9.
Taylor Hornby:
Taylor Hornby (5):
Disable hardening when building for coverage reports.
Upgrade libsodium for AVX2-detection bugfix.
Fix inconsistent optimization flags; single source of truth.
Add -fwrapv -fno-strict-aliasing; fix libzcash flags.
Use libsodium's s < L check, instead checking that libsodium checks that.
Simon Liu:
Simon Liu (3):
Fixes #1193 so that during verification benchmarking it does not unncessarily create thousands of CTransaction objects.
Closes #701 by adding documentation about the Payment RPC interface.
Add note about zkey and encrypted wallets.
Gaurav Rana:
Gaurav Rana (1):
Update zcash-cli stop message.
Tom Ritter:
Tom Ritter (1):
Clarify comment about nonce space for Note Encryption.
Robert C. Seacord:
Robert C. Seacord (1):
Memory safety and correctness fixes found in NCC audit.
Patrick Strateman (merged by Taylor Hornby):
Patrick Strateman (1):
Pull in some DoS mitigations from upstream. (#1258)
Wladimir J. van der Laan:
Wladimir J. van der Laan (1):
net: correctly initialize nMinPingUsecTime.

6
doc/release-notes/release-notes-1.0.2.md

@ -5,12 +5,12 @@ ITH4Coinomia (2):
S. Matthew English (1):
enforcing consistency 'tor' to 'Tor'
Sean Bowe (1):
Sean Bowe (2):
Write R1CS output to file in GenerateParams.
1.0.2 release.
Simon (4):
Simon Liu (4):
Fixes #1762 segfault when miner is interrupted.
Fixes #1779 so that sending to multiple zaddrs no longer fails.
Add GenIdentity, an identity function for MappedShuffle.
Add transaction size and zaddr output limit checks to z_sendmany.

99
zcutil/release-notes.py

@ -0,0 +1,99 @@
import re, sys, os, os.path
import subprocess
import argparse
from itertools import islice
from operator import itemgetter
author_aliases = {
'Simon': 'Simon Liu',
'bitcartel': 'Simon Liu',
'EthanHeilman': 'Ethan Heilman',
}
def apply_author_aliases(name):
if name in author_aliases:
return author_aliases[name]
else:
return name
def parse_authors(line):
commit_search = re.search('(\d+)', line)
if commit_search:
commits = commit_search.group(1)
else:
commits = 0
name = re.sub(' \(\d+\)|:|\n|\r\n$', '', line)
return name, commits
def alias_authors_in_release_notes(line):
for key in author_aliases:
if re.match(key, line):
line = line.replace(key, author_aliases[key])
break
return line
## Returns dict of {'author': #_of_commits} from a release note
def authors_in_release_notes(filename):
note = os.path.join(doc_dir, 'release-notes', filename)
with open(note, 'r') as f:
authors = {}
line = f.readline()
first_name, commits = parse_authors(line)
authors[apply_author_aliases(first_name)] = commits
for line in f:
if line in ['\n', '\r\n']:
for author in islice(f, 1):
name, commits = parse_authors(author)
authors[apply_author_aliases(name)] = commits
return authors
## Sums commits made by contributors in each Zcash release note in ./doc/release-notes and writes to authors.md
def document_authors():
print "Writing contributors documented in release-notes directory to authors.md."
authors_file = os.path.join(doc_dir, 'authors.md')
with open(authors_file, 'w') as f:
f.write('Zcash Contributors\n==================\n\n')
total_contrib = {}
for notes in os.listdir(os.path.join(doc_dir, 'release-notes')):
authors = authors_in_release_notes(notes)
for author in authors:
commits = int(authors[author])
if author in total_contrib:
total_contrib[author] += commits
else:
total_contrib[author] = commits
sorted_contrib = sorted(total_contrib.items(), key=itemgetter(1, 0), reverse=True)
for n, c in sorted_contrib:
if c != 0:
f.write("{0} ({1})\n".format(n, c))
## Writes release note to ./doc/release-notes based on git shortlog when current version number is specified
def generate_release_note(version, filename):
print "Automatically generating release notes for {0} from git shortlog. Should review {1} for accuracy.".format(version, filename)
prev_tag = subprocess.Popen(['git describe --abbrev=0 v{0}^'.format(version)], shell=True, stdout=subprocess.PIPE).communicate()[0].strip()
print "Previous release tag: ", prev_tag
notes = subprocess.Popen(['git shortlog --no-merges {0}..v{1}'.format(prev_tag, version)], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
lines = notes.split('\n')
lines = [alias_authors_in_release_notes(line) for line in lines]
release_note = os.path.join(doc_dir, 'release-notes', 'release-notes-{0}.md'.format(version))
with open(release_note, 'w') as f:
f.writelines('\n'.join(lines))
def main(version, filename):
if version != None:
generate_release_note(version, filename)
document_authors()
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--version')
args = parser.parse_args()
root_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
doc_dir = os.path.join(root_dir, 'doc')
version = None
filename = None
if args.version:
version = args.version
filename = 'release-notes-{0}.md'.format(version)
main(version, filename)
Loading…
Cancel
Save