Commit Graph

110 Commits

Author SHA1 Message Date
Kodi Arfer
a27d737e1c Drop support for Pythons 3 older than 3.3 2017-04-24 14:22:13 -07:00
Kodi Arfer
21cec4b64a Update NEWS for sharp macros (#1283) 2017-04-22 19:42:29 -07:00
Kodi Arfer
ad94343e4a Merge pull request #1269 from Kodiologist/bytecode
Automatically read and write bytecode
2017-04-14 13:52:07 -07:00
Kodi Arfer
2b11b9be20 Automatically read and write bytecode
Importing or executing a Hy file now loads the byte-compiled version if it exists and is up to date, and if not, the source is byte-compiled after it's parsed.

This change can speed up Hy a lot. Here are some examples comparing run times of the current master (491b474e) to this commit, on my laptop with Python 3.6:

- `nosetests --exclude='test_bin'` goes from 3.8 s to 0.7 s (a 5-fold speedup)
- `hy -c '(print "hello world")` goes from 0.47 s to 0.20 s (a 2-fold speedup)
- Rogue TV's startup goes from 3.6 s to 0.4 s (a 9-fold speedup)

Accompanying changes include:

- `setup.py` now creates and installs bytecode for `hy.core`, `hy.contrib`, and `hy.extra`.
- The `hyc` command under Python 3 now creates bytecode in `__pycache__`, as usual for Python 3, instead of putting the `.pyc` right next to the source file like Python 2 does.

I've removed a test of `hy.extra.anaphoric.a-if` that triggers #1268 when the test file is byte-compiled and then hits some weird `macroexpand` bug or something when I try to work around that—Nose crashes when trying to produce an error message, and I can't seem to replicate the bug without Nose.
2017-04-14 13:38:33 -07:00
Kodi Arfer
5eb928356a Overhaul semantics of binary operators (#1261)
I've added shadow versions of many operators that didn't have one. And, I've changed the behavior of various binary operators with more or fewer than 2 arguments to make the shadow and real versions more consistent and to make the behavior more logical in either case. For details, see the additions to NEWS and the new file tests/native_tests/operators.hy, which simultaneously tests shadow and real operators.

Although there are a lot of changes, I've put them all in one commit because they're interdependent.
2017-04-13 19:42:01 -05:00
Kodi Arfer
18acfe6495 Revert the extension of with-decorator to setv
This is no longer necessary now that `defn` always produces a `FunctionDef`.

To compensate, I've made small edits to two contrib modules and reverted a small test change.
2017-04-13 06:36:00 +03:00
Kodi Arfer
286d568959 Fix a crash when tokenizing a single quote 2017-04-07 21:12:17 +03:00
Tuukka Turto
4a5e2fd852 Merge branch 'master' into walk-loop 2017-04-01 08:15:10 +03:00
Kodi Arfer
a7085138f6 Add tests for #533 2017-03-30 16:10:34 -07:00
Kodi Arfer
5aadeba3fe Fix bug: loop replaced strings equal to "recur" 2017-03-30 15:49:10 -07:00
Kodi Arfer
f8e5645c2e Small NEWS and docs fixes for hy-repr (#1258) 2017-03-25 12:13:44 -05:00
Kodi Arfer
bf2f90a0d9 Add hy.contrib.hy-repr 2017-03-24 08:43:53 -07:00
Kodi Arfer
ae1dd78c53 Make setv always return None 2017-03-24 06:38:30 +02:00
Tuukka Turto
2ee91f6dc6 Merge branch 'yield-ret'
Conflicts:
	NEWS
2017-03-19 22:26:13 +02:00
Ryan Gonzalez
7c82c01a6a Fix #151 (again!): yield inside with wasn't propagated to Result 2017-03-08 16:04:48 -06:00
Kodi Arfer
5f00921dea Fix #1243: read raises EOFError on false inputs (#1244)
* Fix #1243: `read` raises EOFError on false inputs

* Fix crash when trying to `eval` false values
2017-03-06 10:51:25 -06:00
Kodi Arfer
484daafa53 Move hy.core.reserved to hy.extra.reserved (#1231)
It was an odd one out by being in hy.core but needing to be called by a qualified name. It's at home in hy.extra.
2017-03-02 16:49:32 -06:00
Kodi Arfer
ebfa636b50 Fix #1237: iterator-handling bug in partition
Also, `partition` with n < 0 now raises an error.
2017-02-26 20:37:35 +02:00
Kodi Arfer
e4a7b317e1 Make fn work like lambda and remove lambda (#1228)
* with-decorator: Allow a `setv` form as the form to be decorated

This feature is of dubious value by itself, but it's necessary to allow `defn` to create a lambda instead of a `def`.

* Make `fn` work the same as `lambda`

That is, allow it to generate a `lambda` instead of a `def` statement if the function body is just an expression.

I've removed two uses of with_decorator in hy.compiler because they'd require adding another case to HyASTCompiler.compile_decorate_expression and they have no ultimate effect, anyway.

In a few tests, I've added a meaningless statement in `fn` bodies to force generation of a `def`.

I've removed `test_fn_compiler_empty_function` rather than rewrite it because it seems like a pain to maintain and not very useful.

* Remove `lambda`, now that `fn` does the same thing
2017-02-22 17:36:52 -06:00
Kodi Arfer
45b7a4ac9d Add bytestring literals 2017-02-19 09:04:45 +02:00
Kodi Arfer
f3edeb99ae Allow commas and underscores in numeric literals
You can use them as thousands separators.

This change differs from PEP 515 in that not only does it allow commas in addition to underscores, but it's much more liberal about placement. Any number of underscores or commas can be placed anywhere, even at the start.
2017-02-15 09:03:24 +02:00
Kodi Arfer
2a44928eb7 Remove let
Yes, bizarrely, this does require editing the implementation of `defn` a little. Without the import, HyList isn't in scope. Defining `let` made it visible due to black magic regarding automatic import.
2017-02-13 09:12:21 -08:00
Kodi Arfer
d517378eba Update NEWS 2017-02-03 15:48:57 -08:00
Kodi Arfer
9ca7f49c88 Make xor return single true inputs
The documentation should now be correct (#1214).
2017-02-03 22:25:38 +02:00
Tuukka Turto
dda456ddd9 Release 0.12.0 preparation (#1140)
* Release 0.12.0 preparation

* Update news

* Update news

* Update news

* Update news to contain version info change

* Add require change into news

* Update in respect of true, false and nil

* add multimethod change

* add lazy sequences

* add hy.core.reserved

* add #1160 - hy2py can use standard input

* added defmacro!

* add comp, constantly and complement

* add juxt

* contrib clean up

* Allow keyword args in method calls before the obj
2017-01-17 15:43:02 -06:00
Jakub Wilk
ff4ba5b103 Fix typos 2016-07-01 16:44:12 +02:00
Jakub Wilk
72bf2619e8 NEWS: Fix typo 2016-01-15 16:54:39 +01:00
Jakub Wilk
1d16addd2e Fix typos 2015-12-08 14:43:47 +01:00
Jakub Wilk
3a1af0c219 Fix typos 2015-09-29 22:57:36 +02:00
Zack M. Davis
82b68da88c preliminary draft of NEWS for 0.10.2 2015-05-03 10:19:25 -07:00
Paul Tagliamonte
f5f4384722 Another typo. Don't be a release manager in the morning 2014-10-10 09:53:33 -04:00
Paul Tagliamonte
75adfb93d6 Damnit @tianon 2014-10-10 09:52:44 -04:00
Paul Tagliamonte
0a8fc0ebb7 Add in NEWS for 0.10.1 2014-10-10 09:45:07 -04:00
Abhishek L
4f74652c73 the mega typo fix commit
Wow! much typos! such fix!
2014-05-05 23:47:14 +05:30
Paul Tagliamonte
10149f66ec NEWS! 2014-04-10 23:00:53 -04:00
Bob Tolbert
978ededf23 Merge pull request #406 from paultag/paultag/bugfix/im-an-idiot
Paultag/bugfix/im an idiot
2013-12-31 11:12:15 -08:00
Paul Tagliamonte
eeef65b505 Change the signature of (for) and (with).
(for) is restored to clojure-like flatness.
 (with) can be used without the nested list if you don't care about the
        name.

   Tests and examples updated.
2013-12-31 13:35:31 -05:00
Berker Peksag
3774a05d87 Add Kevin Zita to NEWS for 0.9.12. 2013-12-31 19:39:37 +02:00
Paul Tagliamonte
8cabf22749 add news for 0.9.12 2013-12-31 12:04:43 -05:00
Paul Tagliamonte
fd60a864eb Translate all foo? -> is_foo. Close #334
The fancypants Hy award goes to Nick for coming up with the quoted
symbol hack for exports. This broke with foo?, since the export string
needs to be is_foo, but using a quoted string will pick up the change
due to it being a Symbol.

Mad clown love for that, @olasd.
2013-12-01 15:03:31 -05:00
Paul Tagliamonte
a5273b233e Update NEWS for 0.9.11 2013-11-12 21:56:56 -05:00
Paul Tagliamonte
d4aa9b8632 Update NEWS. 2013-07-07 14:03:25 -04:00
Paul Tagliamonte
801a16c415 Adding NEWS entry 2013-07-06 15:04:11 -04:00
Paul Tagliamonte
5554c50671 Updating NEWS entries. 2013-07-04 22:25:40 -04:00
Paul Tagliamonte
5a82585a7f NEWS update 2013-05-12 13:40:21 -04:00
Nicolas Dandrimont
04b2d9d291 Update NEWS 2013-05-08 15:50:43 +02:00
Nicolas Dandrimont
5bed886362 Fix j-related NEWS entry
I claim this silly bug as mine!
2013-05-06 14:58:14 +03:00
Paul Tagliamonte
ba114f220b add NEWS 2013-05-05 23:03:55 -04:00
Paul R. Tagliamonte
d50551ca71 fixing the bits 2013-04-14 22:19:33 -04:00
Paul R. Tagliamonte
09d20cf904 Adding in some new items 2013-04-14 22:17:15 -04:00
Julien Danjou
f8131d3c36 compiler: add else' support in try'
This is a bit tricky, since we'll also have to support `finally' in the end,
I've introduced an Else statement on my own to be able to recognize it.

This fixes #74

Signed-off-by: Julien Danjou <julien@danjou.info>
2013-04-09 17:00:30 +02:00
Paul R. Tagliamonte
38a714b5c5 Adding more tests; new entries 2013-04-07 19:44:52 -04:00
Paul R. Tagliamonte
4db9446197 Fixing (with)'s syntax to be more hyish. 2013-04-07 18:35:36 -04:00
Paul R. Tagliamonte
4debdf63ea Adding and / or to NEWS 2013-04-07 18:18:02 -04:00
Paul R. Tagliamonte
3cc165545d add to NEWS 2013-04-07 15:07:24 -04:00
Paul R. Tagliamonte
546e7ff50b Style bits 2013-04-07 14:32:47 -04:00
Paul R. Tagliamonte
0c0db1ddcb some last entries 2013-04-07 13:24:46 -04:00
Paul R. Tagliamonte
eba57bea07 Backfilling NEWS entries 2013-04-07 13:24:19 -04:00
Paul R. Tagliamonte
0d96c95fe9 Adding 0.9.3 entries 2013-04-07 13:03:45 -04:00
Paul R. Tagliamonte
070896adca Adding in a NEW file; filling this in 2013-04-07 12:47:21 -04:00