Giter Site home page Giter Site logo

waitusz / cpython Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dabeaz/cpython_hack

0.0 1.0 0.0 330.52 MB

The Python programming language

Home Page: https://www.python.org/

License: Other

Makefile 0.37% Python 13.45% C 81.41% Batchfile 0.01% HTML 0.14% C++ 0.85% Shell 0.50% M4 3.29%

cpython's Introduction

This is @dabeaz Python

I wouldn't use this if I were you.

Deletions

Some people do a "100 days of code" challenge. This is the opposite.

  • Day 1 (6/12/2020). Removed xml package, _elementtree.c, xmlrpc, plistlib.
  • Day 2 (6/13/2020). Removed decimal, fractions, statistics.
  • Day 3 (6/14/2020). Obliterated tkinter.
  • Day 4 (6/15/2020). Wasted the web. html, http, urllib, cgi? Gone.
  • Day 6 (6/16/2020). Eliminated email (and smtp, pop, imap, etc.).
  • Day 7 (6/17/2020). No news is good news (nntplib).
  • Day 8 (6/18/2020). Fetch THAT. (ftplib, telnetlib).
  • Day 9 (6/19/2020). Asyncore, no more.
  • Day 10 (6/20/2020). Wave goodbye (wavfile, sunau, aifc, sndhdr).
  • Day 11 (6/21/2020). Wiped wsgiref (and netrc, colorsys, graphlib, msilib).
  • Day 12 (6/22/2020). Excised xdrlib and uu.
  • Day 13 (6/23/2020). Tabled tabnanny.
  • Day 14 (6/24/2020). Asyncio... awaited.
  • Day 15 (6/25/2020). Deadlocked concurrent.
  • Day 16 (6/26/2020). Mauled multiprocessing, mmap, modulefinder, numbers.
  • Day 17 (6/27/2020). Sacked socket, socketserver, ssl, sqlite3, select, subprocess, selectors.
  • Day 18 (6/28/2020). No, not tests. Types.
  • Day 19 (6/29/2020). No, not typing either. And take dataclasses with you. And documentation.
  • Day 20 (6/30/2020). No, not even ctypes. Or logging.
  • Day 21 (7/01/2020). No, not debugging with pdb. Or help().
  • Day 22 (7/02/2020). No, it's not slow if you can't profile it.
  • Day 23 (7/03/2020). Grab bag. Removed optparse, pwd, grp, resource, nis, and others.
  • Day 24 (7/04/2020). Thrashed threading. And some other things.
  • Day 25 (7/05/2020). Dismantled distutils. And most of the standard library.

Now what? Still 75 days to go...

  • Day 26 (7/06/2020). Fracked faulthandler and tracemalloc.
  • Day 27 (7/07/2020). zipimport, time, atexit. Gone.
  • Day 28 (7/08/2020). Impaled importlib.
  • Day 29 (7/09/2020). Axed abc, locale, unicodedata, errno.
  • Day 30 (7/10/2020). No, you will never be warned.
  • Day 31 (7/11/2020). Gutted genericalias. Also picklebuf, odictobject, and SimpleNamespace.
  • Day 32 (7/12/2020). Offed optimize mode.
  • Day 33 (7/13/2020). Clipped contextvars.
  • Day 34 (7/14/2020). Cut clinic files.
  • Day 35 (7/15/2020). Chopped clinic.
  • Day 36 (7/16/2020). Closed BytesIO and StringIO.
  • Day 37 (7/17/2020). Ceased .imag, .real, .numerator .denominator.
  • Day 38 (7/18/2020). First steps at demacroing. Py_DEBUG, Py_REF_TRACE, Py_REF_DEBUG gone.
  • Day 39 (7/19/2020). Removed _thread, urandom, import locking.
  • Day 40 (7/20/2020). SIGKILL signal handling.
  • Day 41 (7/21/2020). If you never release the GIL, does it exist?
  • Day 42 (7/22/2020). Fork that! fork, wait, spawn, exec, etc. gone.
  • Day 43 (7/23/2020). Pruned posix. Many functions eliminated.
  • Day 44 (7/24/2020). Get! Out! More posix pruning.
  • Day 45 (7/25/2020). Continued posix pruning.
  • Day 46 (7/26/2020). No, you can't audit it.
  • Day 47 (7/27/2020). pyc files and __pycache__. Gone.
  • Day 48 (7/28/2020). DLL hell to hell! No more dynamic loading.
  • Day 49 (7/29/2020). GIL Gone.
  • Day 50 (7/30/2020). Ransacked some runtime state.

Halfway there. It all gets more difficult from here...

  • Day 51 (7/31/2020). Lost all locks.
  • Day 52 (8/01/2020). Atom smasher.
  • Day 53 (8/02/2020). What time is it?!?!? Remove pytime.c. Other cleanup.
  • Day 54 (8/03/2020). We don't play arenas.
  • Day 55 (8/04/2020). A hex lifted.
  • Day 56 (8/05/2020). Various config/cmdline options removed.
  • Day 57 (8/06/2020). Continued removal of options.
  • Day 58 (8/07/2020). Threads. Pulled.
  • Day 59 (8/08/2020). Removed some deprecated C API functions.
  • Day 60 (8/09/2020). What recursion limit? Segfault FTW!
  • Day 61 (8/10/2020). More removal of recursion checking/limits.
  • Day 62 (8/11/2020). Removed remaining abstract class support.
  • Day 63 (8/12/2020). Trace that! Or not.
  • Day 64 (8/13/2020). Gutted more of the sys module.
  • Day 65 (8/14/2020). No peeping. Or slotting.
  • Day 66 (8/15/2020). UTF-7, not enough. UTF-16, too much. UTF-8, just right.
  • Day 67 (8/16/2020). Async. Awaited.
  • Day 68 (8/17/2020). No, you can't comment on types.
  • Day 69 (8/18/2020). Complex numbers fell into a singularity.
  • Day 70 (8/19/2020). _weakref module. Weak.
  • Day 71 (8/20/2020). There's no locale like no locale.
  • Day 72 (8/21/2020). The gotos do not compute.
  • Day 73 (8/22/2020). Hints. Take a hint.
  • Day 74 (8/23/2020). Split key dicts had to split.
  • Day 75 (8/24/2020). Special cases aren't special enough to break the rules.

How will it end? Or is this just the start?

  • Day 76 (8/25/2020). Some import cleanup.
  • Day 77 (8/26/2020). The encoding exorcism has started.
  • Day 78 (8/27/2020). Codecs. Cancelled.
  • Day 79 (8/28/2020). Continued codecs clobbering.
  • Day 80 (8/29/2020). Unicode is unravelling.
  • Day 81 (8/30/2020). Simple is better than complex.
  • Day 82 (8/31/2020). Wasted wchar_t.
  • Day 83 (9/01/2020). More unicode cleanup. Hacked on headers.
  • Day 84 (9/02/2020). Trimmed the tokenizer.
  • Day 85 (9/03/2020). Short repr got no reason.
  • Day 86 (9/04/2020). Textino.
  • Day 87 (9/05/2020). Various unfocused trimming. Yawn.
  • Day 88 (9/06/2020). Ba-bye buffered I/O and bytearray.
  • Day 89 (9/07/2020). More encoding/decoding removal.
  • Day 90 (9/08/2020). Another bytes bites the dust.
  • Day 91 (9/09/2020). Buffer interface. Flushed.
  • Day 92 (9/10/2020). Frack to the __future__.
  • Day 93 (9/11/2020). Punctured packages. And importlib. And marshal.
  • Day 94 (9/12/2020). Took gc to the curb.
  • Day 95 (9/13/2020). free(PyMalloc).
  • Day 96 (9/14/2020). Nothing is "in-place".
  • Day 97 (9/15/2020). Cleaned up some type slots.
  • Day 98 (9/16/2020). There should be one-- and preferably only one --obvious way to do it.
  • Day 99 (9/17/2020). 99 Dead Baboons. Coroutines and exceptions scattered about. Looks like the work of Patches.
  • Day 100 (9/18/2020). You were warned.
  • ??? (12/07/2020). Yawn.

What is this mess? Let's do 100 days of cleanup... However, there are some ground rules. No more than 15 minutes can be spent each day. No removal of core functionality.

  • Day 1 (1/1/2021). Removed some conditional compilation.
  • Day 2 (1/2/2021). Removed PyFloat_AS_DOUBLE macro.
  • Day 3 (1/3/2021). Removed PyLong_AS_LONG, PyType_FastSubclass, PyType_Check, PyType_CheckExact macros.
  • Day 4 (1/4/2021). Removed PyList_GET_SIZE and PyList_GET_ITEM.
  • Day 5 (1/5/2021). Removed PyTuple_GET_SIZE and PyTuple_GET_ITEM.
  • Day 6 (1/6/2021). Removed PySequence_Fast_GET_{SIZE,ITEM}. PySet_GET_SIZE. PyDict_GET_SIZE.
  • Day 7 (1/7/2021). No progress.
  • Day 8 (1/8/2021). No progress.
  • Day 9 (1/9/2021). Some list API cleanup.
  • Day 10 (1/10/2021). PyTuple_SET_ITEM -> PyTuple_InitItem

What is this new line of modifications you ask? At this point, it's about restoring data abstraction layers. No direct access to data. Removal of macros and performance hacks.

  • Day 11 (1/11/2021). PyList_SET_ITEM -> PyList_InitItem
  • Day 12 (1/12/2021). Some work on removing PySequence_Fast_ITEMS.
  • Day 13 (1/13/2021). Added PyList_Items(), PyTuple_Items().
  • Day 14 (1/14/2021). Remove Include/internal/pycore_tupleobject.h.
  • Day 15 (1/15/2021). Removed PyTuple_Resize(). Encapsulated PyTupleObject.
  • Day 16 (1/16/2021). Better encapsulation of PyStructSequence.
  • Day 17 (1/17/2021). Better encapsulation of PySet.
  • Day 18 (1/18/2021). More tuple/list encapsulation. Removed PyTuple_SetItem.
  • Day 19 (1/19/2021). Moved set type checking into functions.
  • Day 20 (1/20/2021). Float cleanup.
  • Day 21 (1/21/2021). Generator/Cell cleanup.
  • Day 22 (1/22/2021). Various minor cleanup of iterators, enum, slice.
  • Day 23 (1/23/2021). Started some dict cleanup.
  • Day 24 (1/24/2021). More dict cleanup. Removed _PyDict_MergeEx.
  • Day 25 (1/25/2021). Removed PyDict_*{KnownHash} functions.
  • Day 26 (1/26/2021). More dict cleanup.
  • Day 27 (1/27/2021). Classobject/capsule cleanup.
  • Day 28 (1/28/2021). Methodobject cleanup.
  • Day 29 (1/29/2021). pymem and long cleanup.
  • Day 30 (1/30/2021). slice cleanup.
  • Day 31 (1/31/2021). weakref cleanup.
  • Day 32 (2/1/2021). Removed bitset.h
  • Day 33 (2/2/2021). Macro cleanup in pythonrun.h
  • Day 34 (2/3/2021). Nothing.
  • Day 35 (2/4/2021). Started some string cleanup.
  • Day 36 (2/5/2021). Continued string cleanup.
  • Day 37 (2/6/2021). Continued string cleanup.
  • Day 38 (2/7/2021). Continued string cleanup.
  • Day 39 (2/8/2021). Continued string cleanup.
  • Day 40 (2/9/2021). Continued string cleanup (at 15 minutes/day this could take awhile).
  • Day 41 (2/10/2021). Yes, more string cleanup.
  • Day 42 (2/11/2021). Alas. More string cleanup.
  • Day 43 (2/12/2021). String cleanup (in progress. Currently broken)
  • Day 44 (2/13/2021). Continued string cleanup.
  • Day 45 (2/14/2021). Love string cleanup.
  • Day 46 (2/15/2021). More string cleanup.
  • Day 47 (2/16/2021). More string cleanup.
  • Day 48 (2/17/2021). An endless sea of strings.
  • Day 49 (2/18/2021). String cleanup.
  • Day 50 (2/19/2021). Strings.

Halfway to somewhere... or nowhere?

  • Day 51 (2/20/2021). Strings.
  • Day 52 (2/21/2021). Strings.
  • Day 53 (2/22/2021). Strings.
  • Day 54 (2/22/2021). Strings.
  • Day 55 (2/23/2021). Strings.
  • Day 56 (2/24/2021). Strings.
  • Day 57 (2/25/2021). Strings.
  • Day 58 (2/26/2021). Strings.
  • Day 59 (2/27/2021). Strings.
  • Day 60 (2/28/2021). Strings.
  • Day 61 (3/01/2021). Strings.
  • Day 62 (3/02/2021). Strings.
  • Day 63 (3/03/2021). Strings.
  • Day 64 (3/04/2021). Pondering
  • Day 65 (3/05/2021). Pondering.
  • Day 66 (3/06/2021). Pondering.
  • Day 67 (3/07/2021). Biking.
  • Day 68 (3/08/2021). Minor tuple cleanup.
  • Day 69 (3/09/2021). Pondering.
  • Day 70 (3/10/2021). Pondering.
  • Day 71 (3/11/2021). Removed PyList_CheckExact.

Copyright and License Information

Copyright (c) 2001-2020 Python Software Foundation. All rights reserved.

Copyright (c) 2000 BeOpen.com. All rights reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives. All rights reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved.

See the file "LICENSE" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.

This Python distribution contains no GNU General Public License (GPL) code, so it may be used in proprietary projects. There are interfaces to some GNU code but these are entirely optional.

All trademarks referenced herein are property of their respective holders.

cpython's People

Contributors

1st1 avatar akuchling avatar benjaminp avatar berkerpeksag avatar birkenfeld avatar bitdancer avatar brettcannon avatar ezio-melotti avatar freddrake avatar gpshead avatar gvanrossum avatar gward avatar jackjansen avatar jeremyhylton avatar loewis avatar mdickinson avatar merwok avatar ned-deily avatar nnorwitz avatar orsenthil avatar pitrou avatar rhettinger avatar serhiy-storchaka avatar terryjreedy avatar tim-one avatar tiran avatar vsajip avatar vstinner avatar warsaw avatar zooba avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.