forked from facebookarchive/planout
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
73 lines (62 loc) · 4.04 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
* Noteworthy changes in release 0.6.0
- Python 3 compatibility
- Language-level control of logging: The return value of assign now determines
whether or not an exposure event will be automatically logged. If either a
truth-y value or nothing is returned from assign, then an exposure will be
logged. If a false-y value (excluding None) is returned then exposure will not
be logged.
- SimpleInterpretedExperiment has been updated to take utilize the return op
- Ability to register custom operators with the PlanOut interpreter. This
allows developers to more easily integrate PlanOut with other aspects of their
production stack, including gating / eligibility checks.
- Fast sampling: There is now an alternative Sample Op called FastSample that is
more efficient than the existing Sample Op especially when sampling k elements
from a population of n when k << n. If you want to enable this op to speed up
namespace segment allocation then when instantiating your Namespace you can
use the optional keyword argument, use_fast_sample=True in the Namespace
constructor. Thanks to Guy Aridor for this excellent speed up!
- ProductionExperiment class which enforces runtime checks on what PlanOut
variables are available. If undefined variables are requested, exposure log
events do not occur.
* Noteworthy changes in release 0.5 (2014-11-23)
- A SimpleInterpretedExperiment to make it easier to get up and running with
the PlanOut language and interpreter.
- PlanOut language:
- Standardized handling of undefined keys: indexing into a list or dictionary
for an invalid index or key always yields null; nulls may be coalesced via
the null coalescing operator, coalesce()
- A return() operator for determining whether the input units are
"in the experiment" (and therefore logged). Calling "return;" or
"return <value with positive truthiness>" sets in_experiment to True.
Returning a value with negative truthiness sets in_experiment to False.
- PlanOut interpreter:
- Convenience methods for extracting and checking typed operator arguments,
e.g., self.getArgInt('x') will retreive an argument named 'x'. If 'x' is
not given, or 'x' is not an integer, an error will be thrown. This improves
ease of debugging, and also provides a clear path for those who are
implementing the interpreter in strongly typed language.
- Improved argument checking for built-in operators.
- PlanOut editor: the PlanOut editor is a reactive development environment and
testing system for PlanOut-language experiments.
- Breaking changes:
- Namespaces: when a unit is assigned to an experiment and in_experiment is
set to False, the default experiment is executed.
- PlanOut interpreter:
- The length() operator's argument is now 'value', as to allow for unnamed
arguments to be passed in.
- Min and max are now required arguments for randomInteger and randomFloat
- Deprecated validate() and options() methods
- Deprecated self.parameters for operators: self.args refers to arguments
passed into an operator. If an object is a subclass of SimpleOp, then
the arguments are pre-evaluated (and act just like self.parameters).
* Noteworthy changes in release 0.4 (2014-10-29)
- Full support for parameter overrides, which allow for testing of PlanOut
experiments
- Alpha version of PlanOut editor
- Bugfixes to how the PlanOut compiler handles indexing into arrays multiple
times (e.g., a['b'][1][0])
* Noteworthy changes in release 0.3 (2014-06-18) [alpha]
- IMPORTANT UPDATE: The hash function used in prior versions did not match the expected behavior in the documentation (caught by @akalicki). We have updated PlanOut's hashing function, which will likely cause units to be randomly assigned to different parameters. If you are already using PlanOut in a production environment, please upgrade with care. If you are not currently using PlanOut in a production environment, please upgrade immediately:
pip install -U planout
- Other updates:
-The assign() method is now only called once. Thanks to @akalicki for catching this.