[pypy-commit] pypy guard-compatible: avoid interaction with other usages of random.random()
Author: Armin Rigo Branch: guard-compatible Changeset: r90008:5d42d925abed Date: 2017-02-08 11:12 +0100 http://bitbucket.org/pypy/pypy/changeset/5d42d925abed/ Log:avoid interaction with other usages of random.random() diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py --- a/rpython/rlib/jit.py +++ b/rpython/rlib/jit.py @@ -397,11 +397,12 @@ def setup_method(self, meth): global _we_are_jitted_interpreted seed = random.random() -print "seed", seed -random.seed(seed) +print "RandomWeAreJittedTestMixin: seed", seed +r = random.Random() +r.seed(seed) self.orig_we_are_jitted = _we_are_jitted_interpreted def _we_are_jitted_interpreted_random(): -result = random.random() > 0.5 +result = r.random() > 0.5 return result _we_are_jitted_interpreted = _we_are_jitted_interpreted_random ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy guard-compatible: fix merge
Author: Armin Rigo Branch: guard-compatible Changeset: r90007:e0be031fa6c2 Date: 2017-02-08 11:12 +0100 http://bitbucket.org/pypy/pypy/changeset/e0be031fa6c2/ Log:fix merge diff --git a/rpython/rlib/test/test_jit.py b/rpython/rlib/test/test_jit.py --- a/rpython/rlib/test/test_jit.py +++ b/rpython/rlib/test/test_jit.py @@ -4,7 +4,7 @@ from rpython.annotator.model import UnionError from rpython.rlib.jit import (hint, we_are_jitted, JitDriver, elidable_promote, JitHintError, oopspec, isconstant, conditional_call, -elidable, unroll_safe, dont_look_inside, conditional_call_edliable, +elidable, unroll_safe, dont_look_inside, conditional_call_elidable, enter_portal_frame, leave_portal_frame, elidable_compatible, RandomWeAreJittedTestMixin) from rpython.rlib.rarithmetic import r_uint ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy optinfo-into-bridges: merge default
Author: Carl Friedrich Bolz Branch: optinfo-into-bridges Changeset: r90009:189d2e2db7ad Date: 2017-02-08 11:39 +0100 http://bitbucket.org/pypy/pypy/changeset/189d2e2db7ad/ Log:merge default diff too long, truncating to 2000 out of 156212 lines diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -77,3 +77,5 @@ ^.hypothesis/ ^release/ ^rpython/_cache$ + +pypy/module/cppyy/.+/*\.pcm diff --git a/LICENSE b/LICENSE --- a/LICENSE +++ b/LICENSE @@ -28,7 +28,7 @@ DEALINGS IN THE SOFTWARE. -PyPy Copyright holders 2003-2016 +PyPy Copyright holders 2003-2017 --- Except when otherwise stated (look for LICENSE files or information at diff --git a/_pytest/__init__.py b/_pytest/__init__.py --- a/_pytest/__init__.py +++ b/_pytest/__init__.py @@ -1,2 +1,2 @@ # -__version__ = '2.5.2' +__version__ = '2.9.2' diff --git a/_pytest/_argcomplete.py b/_pytest/_argcomplete.py --- a/_pytest/_argcomplete.py +++ b/_pytest/_argcomplete.py @@ -88,9 +88,6 @@ return completion if os.environ.get('_ARGCOMPLETE'): -# argcomplete 0.5.6 is not compatible with python 2.5.6: print/with/format -if sys.version_info[:2] < (2, 6): -sys.exit(1) try: import argcomplete.completers except ImportError: diff --git a/_pytest/_code/__init__.py b/_pytest/_code/__init__.py new file mode 100644 --- /dev/null +++ b/_pytest/_code/__init__.py @@ -0,0 +1,12 @@ +""" python inspection/code generation API """ +from .code import Code # noqa +from .code import ExceptionInfo # noqa +from .code import Frame # noqa +from .code import Traceback # noqa +from .code import getrawcode # noqa +from .code import patch_builtins # noqa +from .code import unpatch_builtins # noqa +from .source import Source # noqa +from .source import compile_ as compile # noqa +from .source import getfslineno # noqa + diff --git a/_pytest/_code/_py2traceback.py b/_pytest/_code/_py2traceback.py new file mode 100644 --- /dev/null +++ b/_pytest/_code/_py2traceback.py @@ -0,0 +1,81 @@ +# copied from python-2.7.3's traceback.py +# CHANGES: +# - some_str is replaced, trying to create unicode strings +# +import types + +def format_exception_only(etype, value): +"""Format the exception part of a traceback. + +The arguments are the exception type and value such as given by +sys.last_type and sys.last_value. The return value is a list of +strings, each ending in a newline. + +Normally, the list contains a single string; however, for +SyntaxError exceptions, it contains several lines that (when +printed) display detailed information about where the syntax +error occurred. + +The message indicating which exception occurred is always the last +string in the list. + +""" + +# An instance should not have a meaningful value parameter, but +# sometimes does, particularly for string exceptions, such as +# >>> raise string1, string2 # deprecated +# +# Clear these out first because issubtype(string1, SyntaxError) +# would throw another exception and mask the original problem. +if (isinstance(etype, BaseException) or +isinstance(etype, types.InstanceType) or +etype is None or type(etype) is str): +return [_format_final_exc_line(etype, value)] + +stype = etype.__name__ + +if not issubclass(etype, SyntaxError): +return [_format_final_exc_line(stype, value)] + +# It was a syntax error; show exactly where the problem was found. +lines = [] +try: +msg, (filename, lineno, offset, badline) = value.args +except Exception: +pass +else: +filename = filename or "" +lines.append(' File "%s", line %d\n' % (filename, lineno)) +if badline is not None: +if isinstance(badline, bytes): # python 2 only +badline = badline.decode('utf-8', 'replace') +lines.append(u'%s\n' % badline.strip()) +if offset is not None: +caretspace = badline.rstrip('\n')[:offset].lstrip() +# non-space whitespace (likes tabs) must be kept for alignment +caretspace = ((c.isspace() and c or ' ') for c in caretspace) +# only three spaces to account for offset1 == pos 0 +lines.append(' %s^\n' % ''.join(caretspace)) +value = msg + +lines.append(_format_final_exc_line(stype, value)) +return lines + +def _format_final_exc_line(etype, value): +"""Return a list of a single line -- normal case for format_exception_only""" +valuestr = _some_str(value) +if value is None or not valuestr: +line = "%s\n" % etype +else: +line = "%s: %s\n" % (etype, valuestr) +return line + +def _some_str(value): +try: +return unicode(value) +except Exception: +try: +return str(value) +except Exception: +pass +return '' % type(value).__name__ diff -
[pypy-commit] pypy vmprof-native: some more changes to the native test
Author: Richard Plangger Branch: vmprof-native Changeset: r90010:d671b63850ea Date: 2017-02-08 19:37 +0100 http://bitbucket.org/pypy/pypy/changeset/d671b63850ea/ Log:some more changes to the native test diff --git a/rpython/rlib/rvmprof/cintf.py b/rpython/rlib/rvmprof/cintf.py --- a/rpython/rlib/rvmprof/cintf.py +++ b/rpython/rlib/rvmprof/cintf.py @@ -46,7 +46,7 @@ eci_kwds = dict( include_dirs = [SRC, SHARED, BACKTRACE, UDIS86], -includes = ['rvmprof.h', 'vmprof_stack.h'], +includes = ['rvmprof.h','vmprof_stack.h'], libraries = _libs, separate_module_files = [ SRC.join('rvmprof.c'), @@ -99,6 +99,7 @@ return CInterface(locals()) + class CInterface(object): def __init__(self, namespace): for k, v in namespace.iteritems(): diff --git a/rpython/rlib/rvmprof/src/rvmprof.c b/rpython/rlib/rvmprof/src/rvmprof.c --- a/rpython/rlib/rvmprof/src/rvmprof.c +++ b/rpython/rlib/rvmprof/src/rvmprof.c @@ -16,16 +16,3 @@ #include "shared/vmprof_main_win32.h" #endif -void dump_native_symbols(int fileno) -{ -// TODOPyObject * mod = NULL; -// TODO -// TODOmod = PyImport_ImportModuleNoBlock("vmprof"); -// TODOif (mod == NULL) -// TODOgoto error; -// TODO -// TODOPyObject_CallMethod(mod, "dump_native_symbols", "(l)", fileno); -// TODO -// TODOerror: -// TODOPy_XDECREF(mod); -} diff --git a/rpython/rlib/rvmprof/src/rvmprof.h b/rpython/rlib/rvmprof/src/rvmprof.h --- a/rpython/rlib/rvmprof/src/rvmprof.h +++ b/rpython/rlib/rvmprof/src/rvmprof.h @@ -21,7 +21,6 @@ #define RPY_EXPORTED extern __attribute__((visibility("default"))) #endif - RPY_EXTERN char *vmprof_init(int fd, double interval, int memory, int lines, const char *interp_name, int native); RPY_EXTERN void vmprof_ignore_signals(int); diff --git a/rpython/rlib/rvmprof/src/shared/symboltable.c b/rpython/rlib/rvmprof/src/shared/symboltable.c --- a/rpython/rlib/rvmprof/src/shared/symboltable.c +++ b/rpython/rlib/rvmprof/src/shared/symboltable.c @@ -170,11 +170,6 @@ } } -#else -// other platforms than linux & mac os x -void dump_all_known_symbols(int fd) { -// oh, nothing to do!! a not supported platform -} #endif #ifdef __unix__ @@ -247,3 +242,193 @@ #endif return 0; } + +#ifdef RPYTHON_VMPROF + +#define WORD_SIZE sizeof(long) +#define ADDR_SIZE sizeof(void*) +#define MAXLEN 1024 + +void _dump_native_symbol(int fileno, void * addr, char * sym, int linenumber, char * filename) { +char natsym[64]; +off_t pos_before; +struct str { +void * addr; +// NOTE windows 64, not supported yet +long size; +char str[1024]; +} s; +pos_before = lseek(fileno, 0, SEEK_CUR); +lseek(fileno, 0, SEEK_END); + +s.addr = addr; +/* must mach ':::' + * 'n' has been chosen as lang here, because the symbol + * can be generated from several languages (e.g. C, C++, ...) + */ +// MARKER_NATIVE_SYMBOLS is \x08 +write(fileno, "\x08", 1); +if (sym == NULL || sym[0] == '\x00') { +snprintf(natsym, 64, "", addr); +sym = natsym; +} +if (filename != NULL) { +s.size = snprintf(s.str, 1024, "n:%s:%d:%s", sym, linenumber, filename); +} else { +s.size = snprintf(s.str, 1024, "n:%s:%d:-", sym, linenumber); +} +write(fileno, &s, sizeof(void*)+sizeof(long)+s.size); + +lseek(fileno, pos_before, SEEK_SET); +} + +int _skip_string(int fileno) +{ +long chars; +int count = read(fileno, &chars, sizeof(long)); +LOG("reading string of %d chars\n", chars); +if (count <= 0) { +return 1; +} +lseek(fileno, chars, SEEK_CUR); + +return 0; +} + +int _skip_header(int fileno, int * version, int * flags) +{ +unsigned char r[4]; +(void)read(fileno, r, 4); +unsigned char count = r[3]; +*version = (r[0] & 0xff) << 8 | (r[1] & 0xff); +*flags = r[2]; +lseek(fileno, (int)count, SEEK_CUR); +return 0; +} + +long _read_word(int fileno) +{ +long w; +read(fileno, &w, WORD_SIZE); +return w; +} + +void * _read_addr(int fileno) +{ +void * a; +read(fileno, &a, ADDR_SIZE); +return a; +} + +int _skip_word(int fileno) +{ +lseek(fileno, WORD_SIZE, SEEK_CUR); +return 0; +} + +int _skip_addr(int fileno) +{ +lseek(fileno, ADDR_SIZE, SEEK_CUR); +return 0; +} + +int _skip_time_and_zone(int fileno) +{ +lseek(fileno, sizeof(int64_t)*2 + 8, SEEK_CUR); +return 0; +} + + +void dump_native_symbols(int fileno) +{ +// only call this function +off_t orig_pos, cur_pos; +char marker; +ssize_t count; +int version; +int flags; +int memory, lines, native; +orig_pos = lseek(fileno, 0, SEEK_CUR); + +lseek(fileno, 5*WORD_SIZE, SEEK_SET); + +while (1) { +LOG("pre read\n"); +count = read(fileno, &marker, 1); +LOG("post read\n"); +if (count <= 0) { +break; +} +cur_pos = lseek(fileno, 0
[pypy-commit] pypy guard-compatible: Update comments with a plan
Author: Armin Rigo Branch: guard-compatible Changeset: r90011:f8ac0ceb09a5 Date: 2017-02-08 19:53 +0100 http://bitbucket.org/pypy/pypy/changeset/f8ac0ceb09a5/ Log:Update comments with a plan diff --git a/rpython/jit/backend/x86/guard_compat.py b/rpython/jit/backend/x86/guard_compat.py --- a/rpython/jit/backend/x86/guard_compat.py +++ b/rpython/jit/backend/x86/guard_compat.py @@ -9,38 +9,62 @@ # -# GUARD_COMPATIBLE(reg, const-ptr) produces the following assembler. -# We also have the normal failure code at , which is -# not put in the assembler but only in a field of the descr. In the -# following code, ofs(x) means the offset in the GC table of the -# pointer 'x': +# GUARD_COMPATIBLE(reg, const-ptr) produces the same assembler as +# a GUARD_VALUE. In the following code, ofs(x) means the offset in +# the GC table of the pointer 'x': # -# MOV reg2, [RIP + ofs(_backend_choices)]# LOAD_FROM_GC_TABLE -# CMP reg, [reg2 + bc_most_recent] +# MOV reg2, [RIP + ofs(const-ptr)] # LOAD_FROM_GC_TABLE +# CMP reg, reg2 +# JNE recovery_stub +# sequel: +# +# +# The difference is that 'recovery_stub' does not jump to one of the +# 'failure_recovery_code' versions, but instead it jumps to +# 'expand_guard_compatible'. The latter calls invoke_find_compatible. +# The result is one of: +# +# * 0: bail out. We jump to the 'failure_recovery_code'. +# +# * -1: continue running on the same path. We patch ofs(const-ptr) +# to contain the new value, and jump to 'sequel'. +# +# * otherwise, it's the address of a bridge. We jump to that bridge. +# +# This is the basic idea, but not the truth. Things are more +# complicated because we cache in the assembler the +# invoke_find_compatible call results. 'expand_guard_compatible' +# actually allocates a '_backend_choices' object, copies on it +# various data it got from the recovery_stub, then patches the +# recovery stub to this (the original recovery stub was padded if +# necessary to have enough room): +# +# recovery_stub: +# MOV R11, [RIP + ofs(_backend_choices)] +# CMP reg, [R11 + bc_most_recent] # JNE slow_case -# JMP *[reg2 + bc_most_recent + 8] +# JMP *[R11 + bc_most_recent + 8] # slow_case: -# PUSH RDX# save -# PUSH RAX# save -# MOV RDX=reg2, RAX=reg -#RDX is the _backend_choices object, RAX is the value to search for -# JMP search_tree# see below -# sequel: +# PUSH RAX# save the original value of RAX +# MOV RAX, reg# the value to search for +# JMP *[R11 + bc_search_tree]# x86-64: trick for a compact encoding # -# The faildescr for this guard is a GuardCompatibleDescr. We add to -# them a few fields: +# The faildescr for the GUARD_COMPATIBLE is a GuardCompatibleDescr. +# Fields relevant for this discussion: # -# - _backend_choices_addr: points inside the GC table, to -# ofs(_backend_choices) -# - _backend_sequel_label: points to the label -# - _backend_failure_recovery: points to the label -# - _backend_gcmap: a copy of the gcmap at this point +# - _backend_ptr_addr: points inside the GC table, to ofs(const-ptr). +# ofs(_backend_choices) is just afterwards. +# Initially _backend_choices is NULL. +# - adr_jump_offset: raw address of the 'sequel' label (this field +#is the same as on any other GuardDescr) # -# The '_backend_choices' object itself is a separate GC struct/array -# with the following fields: +# The '_backend_choices' object itself, when allocated, is a separate +# GC struct/array with the following fields: # -# - bc_faildescr: a copy of the faildescr of that guard +# - bc_faildescr: a reference to the faildescr of that guard +# - bc_gcmap: a copy of the gcmap at this point # - bc_gc_table_tracer: only for a gc_writebarrier() +# - bc_search_tree: always the 'search_tree' label below # - bc_most_recent: 1 pair (gcref, asmaddr) # - bc_list: N pairs (gcref, asmaddr) sorted according to gcref # @@ -48,66 +72,70 @@ # gcrefs move, and ignores the tail of bc_list which contains the # invalid gcref of value -1. # -# Initially, the _backend_choices contains a list of length 1, and -# both bc_most_recent and bc_list[0] contain the same pair (gcref, -# sequel), where 'gcref' is the 2nd argument to guard_compatible() and -# is the address of the label above. -# -# In general, the list can grow to contain all items for which -# find_compatible() was called and returned non-zero. Every entry -# caches the result in 'asmaddr'. The separate 'most_recent' entry -# caches the last value seen, along with the result of -# find_compatible(). If this find_compatible() returned zero, then -# the cache entry contains the 'fail_guard' label below as the -# 'asmaddr' value (such a value is never found inside bc_list, only in -# bc_most_recent). +# The bc_list
[pypy-commit] pypy buffer-cleanup: Close branch buffer-cleanup
Author: Ronan Lamy Branch: buffer-cleanup Changeset: r90012:ae3f90797917 Date: 2017-02-08 20:40 + http://bitbucket.org/pypy/pypy/changeset/ae3f90797917/ Log:Close branch buffer-cleanup ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] pypy py3.5: Merged in buffer-cleanup (pull request #515)
Author: Ronan Lamy Branch: py3.5 Changeset: r90013:3059a0362786 Date: 2017-02-08 20:40 + http://bitbucket.org/pypy/pypy/changeset/3059a0362786/ Log:Merged in buffer-cleanup (pull request #515) Buffer cleanup diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py --- a/pypy/interpreter/baseobjspace.py +++ b/pypy/interpreter/baseobjspace.py @@ -25,15 +25,6 @@ reds=['items', 'w_iterator']) -@specialize.memo() -def _does_override_buffer_w(type): -return type.buffer_w != W_Root.buffer_w - -@specialize.memo() -def _does_override_buffer_w_ex(type): -return type.buffer_w_ex != W_Root.buffer_w_ex - - class W_Root(object): """This is the abstract root class of all wrapped objects that live in a 'normal' object space like StdObjSpace.""" @@ -223,15 +214,8 @@ return None def buffer_w(self, space, flags): -if _does_override_buffer_w_ex(self.__class__): -return self.buffer_w_ex(space, flags)[0] return self.__buffer_w(space, flags).buffer_w(space, flags) -def buffer_w_ex(self, space, flags): -if _does_override_buffer_w(self.__class__): -return self.buffer_w(space, flags), 'B', 1 -return self.__buffer_w(space, flags).buffer_w_ex(space, flags) - def __buffer_w(self, space, flags): if flags & space.BUF_WRITABLE: w_impl = space.lookup(self, '__wbuffer__') @@ -1469,15 +1453,6 @@ raise oefmt(self.w_TypeError, "'%T' does not support the buffer interface", w_obj) -def buffer_w_ex(self, w_obj, flags): -# New buffer interface, returns a buffer based on flags (PyObject_GetBuffer) -# Returns extra information: (buffer, typecode, itemsize) -try: -return w_obj.buffer_w_ex(self, flags) -except BufferInterfaceNotFound: -raise oefmt(self.w_TypeError, -"'%T' does not support the buffer interface", w_obj) - def readbuf_w(self, w_obj): # Old buffer interface, returns a readonly buffer (PyObject_AsReadBuffer) try: diff --git a/pypy/module/_rawffi/array.py b/pypy/module/_rawffi/array.py --- a/pypy/module/_rawffi/array.py +++ b/pypy/module/_rawffi/array.py @@ -91,6 +91,8 @@ W_DataInstance.__init__(self, space, memsize, address) self.length = length self.shape = shape +self.fmt = shape.itemcode +self.itemsize = shape.size def descr_repr(self, space): addr = rffi.cast(lltype.Unsigned, self.ll_buffer) @@ -105,8 +107,7 @@ raise segfault_exception(space, "setting element of freed array") if num >= self.length or num < 0: raise OperationError(space.w_IndexError, space.w_None) -unwrap_value(space, write_ptr, self.ll_buffer, num, - self.shape.itemcode, w_value) +unwrap_value(space, write_ptr, self.ll_buffer, num, self.fmt, w_value) def descr_setitem(self, space, w_index, w_value): try: @@ -123,8 +124,7 @@ raise segfault_exception(space, "accessing elements of freed array") if num >= self.length or num < 0: raise OperationError(space.w_IndexError, space.w_None) -return wrap_value(space, read_ptr, self.ll_buffer, num, - self.shape.itemcode) +return wrap_value(space, read_ptr, self.ll_buffer, num, self.fmt) def descr_getitem(self, space, w_index): try: @@ -141,19 +141,16 @@ @unwrap_spec(num=int) def descr_itemaddress(self, space, num): -itemsize = self.shape.size -ptr = rffi.ptradd(self.ll_buffer, itemsize * num) +ptr = rffi.ptradd(self.ll_buffer, self.itemsize * num) return space.wrap(rffi.cast(lltype.Unsigned, ptr)) def getrawsize(self): -itemsize = self.shape.size -return itemsize * self.length +return self.itemsize * self.length def decodeslice(self, space, w_slice): if not space.isinstance_w(w_slice, space.w_slice): raise oefmt(space.w_TypeError, "index must be int or slice") -letter = self.shape.itemcode -if letter != 'c': +if self.fmt != 'c': raise oefmt(space.w_TypeError, "only 'c' arrays support slicing") w_start = space.getattr(w_slice, space.wrap('start')) w_stop = space.getattr(w_slice, space.wrap('stop')) @@ -192,9 +189,6 @@ for i in range(len(value)): ll_buffer[start + i] = value[i] -def buffer_w_ex(self, space, flags): -return self.buffer_w(space, flags), self.shape.itemcode, self.shape.size - W_ArrayInstance.typedef = TypeDef( 'ArrayInstance', diff --git a/pypy/module/_rawffi/buffer.py b/pypy/module/_rawffi/buffer.py --- a/pypy/module/_rawffi/buffer.py +++ b/pypy/module/_rawffi/buffer.py @@ -14,6 +14,12 @@ def getlength(self): return
[pypy-commit] pypy default: Bump greenlet version
Author: Alex Gaynor Branch: Changeset: r90014:fef27077c286 Date: 2017-02-08 23:15 -0500 http://bitbucket.org/pypy/pypy/changeset/fef27077c286/ Log:Bump greenlet version diff --git a/lib_pypy/greenlet.egg-info b/lib_pypy/greenlet.egg-info --- a/lib_pypy/greenlet.egg-info +++ b/lib_pypy/greenlet.egg-info @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: greenlet -Version: 0.4.11 +Version: 0.4.12 Summary: Lightweight in-process concurrent programming Home-page: https://github.com/python-greenlet/greenlet Author: Ralf Schmitt (for CPython), PyPy team diff --git a/lib_pypy/greenlet.py b/lib_pypy/greenlet.py --- a/lib_pypy/greenlet.py +++ b/lib_pypy/greenlet.py @@ -1,7 +1,7 @@ import sys import _continuation -__version__ = "0.4.11" +__version__ = "0.4.12" # # Exceptions ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] extradoc extradoc: merge heads
Author: Armin Rigo Branch: extradoc Changeset: r5776:b8a362c95c2d Date: 2017-02-09 07:46 +0100 http://bitbucket.org/pypy/extradoc/changeset/b8a362c95c2d/ Log:merge heads diff --git a/sprintinfo/leysin-winter-2017/people.txt b/sprintinfo/leysin-winter-2017/people.txt --- a/sprintinfo/leysin-winter-2017/people.txt +++ b/sprintinfo/leysin-winter-2017/people.txt @@ -11,6 +11,7 @@ == === Armin Rigo private Richard Plangger 26.02/04.02Ermina +Remi Meier (?)27.02/04.02 Ermina == === **NOTE:** lodging is by default in Ermina. There are two ~4 people ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] extradoc extradoc: Slides, same as for pyconza2016
Author: Armin Rigo Branch: extradoc Changeset: r5775:a242a484e2ab Date: 2017-02-09 07:41 +0100 http://bitbucket.org/pypy/extradoc/changeset/a242a484e2ab/ Log:Slides, same as for pyconza2016 diff --git a/talk/swisspython2017/abstract.txt b/talk/swisspython2017/abstract.txt --- a/talk/swisspython2017/abstract.txt +++ b/talk/swisspython2017/abstract.txt @@ -2,7 +2,7 @@ RevDB is an experimental "reverse debugger" for Python, similar to -UndoDB-GDB or LL for C. You run your program once, in "record" mode, +UndoDB-GDB or RR for C. You run your program once, in "record" mode, producing a log file; once you get buggy behavior, you start the reverse-debugger on the log file. It gives an (improved) pdb-like experience, but it is replaying your program exactly as it ran---all diff --git a/talk/pyconza2016/revdb/Makefile b/talk/swisspython2017/revdb/Makefile copy from talk/pyconza2016/revdb/Makefile copy to talk/swisspython2017/revdb/Makefile diff --git a/talk/pyconza2016/revdb/author.latex b/talk/swisspython2017/revdb/author.latex copy from talk/pyconza2016/revdb/author.latex copy to talk/swisspython2017/revdb/author.latex --- a/talk/pyconza2016/revdb/author.latex +++ b/talk/swisspython2017/revdb/author.latex @@ -6,5 +6,5 @@ \ \ \ \ \ \ \ \ \ \includegraphics[scale=0.05]{pypylogo.png}} -\institute{PyCon ZA 2016} -\date{October 2016} +\institute{Swiss Python Summit 2017} +\date{February 2017} diff --git a/talk/pyconza2016/revdb/demo/demo1.py b/talk/swisspython2017/revdb/demo/demo1.py copy from talk/pyconza2016/revdb/demo/demo1.py copy to talk/swisspython2017/revdb/demo/demo1.py diff --git a/talk/pyconza2016/revdb/demo/todo.txt b/talk/swisspython2017/revdb/demo/todo.txt copy from talk/pyconza2016/revdb/demo/todo.txt copy to talk/swisspython2017/revdb/demo/todo.txt diff --git a/talk/pyconza2016/revdb/stylesheet.latex b/talk/swisspython2017/revdb/stylesheet.latex copy from talk/pyconza2016/revdb/stylesheet.latex copy to talk/swisspython2017/revdb/stylesheet.latex diff --git a/talk/pyconza2016/revdb/talk.pdf b/talk/swisspython2017/revdb/talk.pdf copy from talk/pyconza2016/revdb/talk.pdf copy to talk/swisspython2017/revdb/talk.pdf index 51c4b5737abc9af5a4d043416a98f1afae522e8d..936eb31c60797aab7e3b6d9bb269723da9440b49 GIT binary patch [cut] diff --git a/talk/pyconza2016/revdb/talk.rst b/talk/swisspython2017/revdb/talk.rst copy from talk/pyconza2016/revdb/talk.rst copy to talk/swisspython2017/revdb/talk.rst --- a/talk/pyconza2016/revdb/talk.rst +++ b/talk/swisspython2017/revdb/talk.rst @@ -6,7 +6,7 @@ Introduction === -* I am Armin Rigo, part of the PyPy project since 13 years +* I am Armin Rigo, part of the PyPy project since the start (14 years) * PyPy is another implementation of Python @@ -92,9 +92,9 @@ * Track multiple processes -* Windows (for $?) +* Windows (contract possible) -* Python 3 (soon?) +* Python 3 (soon) Comparison ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit
[pypy-commit] extradoc extradoc: include the text of the demo inside the pdf, just in case
Author: Armin Rigo Branch: extradoc Changeset: r5777:417f4214a5b6 Date: 2017-02-09 07:57 +0100 http://bitbucket.org/pypy/extradoc/changeset/417f4214a5b6/ Log:include the text of the demo inside the pdf, just in case diff --git a/talk/swisspython2017/revdb/demo/_demo1.png b/talk/swisspython2017/revdb/demo/_demo1.png new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fa6836abd3a312117a6bdef3d42cc70cc2ebec40 GIT binary patch [cut] diff --git a/talk/swisspython2017/revdb/talk.pdf b/talk/swisspython2017/revdb/talk.pdf index 936eb31c60797aab7e3b6d9bb269723da9440b49..0b5bbf46bda5af01898f6b0594e0d5dd76055487 GIT binary patch [cut] diff --git a/talk/swisspython2017/revdb/talk.rst b/talk/swisspython2017/revdb/talk.rst --- a/talk/swisspython2017/revdb/talk.rst +++ b/talk/swisspython2017/revdb/talk.rst @@ -21,6 +21,13 @@ * Demo +What is a reverse debugger? +=== + +.. image:: demo/_demo1.png + :scale: 25% + + How is that possible?? == ___ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit