<commit_before>﻿libfptu
==============================================
Fast Positive Tuples, aka "Позитивные Кортежи"
by [Positive Technologies](https://www.ptsecurity.ru).

*The Future will Positive. Всё будет хорошо.*
[![Build Status](https://travis-ci.org/leo-yuriev/libfptu.svg?branch=master)](https://travis-ci.org/leo-yuriev/libfptu)
[![Build status](https://ci.appveyor.com/api/projects/status/8617mtix9paivmkx/branch/master?svg=true)](https://ci.appveyor.com/project/leo-yuriev/libfptu/branch/master)

English version by Google [is here](https://translate.googleusercontent.com/translate_c?act=url&ie=UTF8&sl=ru&tl=en&u=https://github.com/leo-yuriev/libfptu/tree/devel).


## Кратко

"Позитивные Кортежи" (_ПК_) предназначены как для представления
небольших JSON-подобных структур, так и для хранения данных в парах
ключ-значение, в том числе в разделяемой памяти.

Целью дизайна _ПК_ была эффективная машинная обработка в памяти
небольших порций данных (до 100 полей, до 10 килобайт). При этом
совместное использование (чтение) кортежей в разделяемой памяти является
одним из основных и целеполагающих сценариев (проект 1Hippeus).

В _ПК_ нет встроенной схемы данных. Поэтому у полей нет имен, они
идентифицируются по коротким целочисленным тегам. Это очень быстро и
достаточно компактно. Тем не менее, поддержка вложенных кортежей
позволяет легко хранить пары имя-значение.


### Отличия от MessagePack, Protocol Buffers, BJSON

1. Простота и легковесность. Объем кода минимален, а внутреннее
устройство очаровывает простотой (мы к этому стремимся).

2. Нужно чуть больше места. Мы не сжимаем данные, а храним их в нативном<commit_msg>fptu: update CI-status for 'devel' branch.<commit_after>﻿libfptu
==============================================
Fast Positive Tuples, aka "Позитивные Кортежи"
by [Positive Technologies](https://www.ptsecurity.ru).

*The Future will Positive. Всё будет хорошо.*
[![Build Status](https://travis-ci.org/leo-yuriev/libfptu.svg?branch=devel)](https://travis-ci.org/leo-yuriev/libfptu)
[![Build status](https://ci.appveyor.com/api/projects/status/8617mtix9paivmkx/branch/devel?svg=true)](https://ci.appveyor.com/project/leo-yuriev/libfptu/branch/devel)

English version by Google [is here](https://translate.googleusercontent.com/translate_c?act=url&ie=UTF8&sl=ru&tl=en&u=https://github.com/leo-yuriev/libfptu/tree/devel).


## Кратко

"Позитивные Кортежи" (_ПК_) предназначены как для представления
небольших JSON-подобных структур, так и для хранения данных в парах
ключ-значение, в том числе в разделяемой памяти.

Целью дизайна _ПК_ была эффективная машинная обработка в памяти
небольших порций данных (до 100 полей, до 10 килобайт). При этом
совместное использование (чтение) кортежей в разделяемой памяти является
одним из основных и целеполагающих сценариев (проект 1Hippeus).

В _ПК_ нет встроенной схемы данных. Поэтому у полей нет имен, они
идентифицируются по коротким целочисленным тегам. Это очень быстро и
достаточно компактно. Тем не менее, поддержка вложенных кортежей
позволяет легко хранить пары имя-значение.


### Отличия от MessagePack, Protocol Buffers, BJSON

1. Простота и легковесность. Объем кода минимален, а внутреннее
устройство очаровывает простотой (мы к этому стремимся).

2. Нужно чуть больше места. Мы не сжимаем данные, а храним их в нативном
{'fraction_non_alphanumeric': 0.12153196622436671, 'fraction_numerical': 0.008443908323281062, 'mean_word_length': 5.741869918699187, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 14, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6284411', 'n_tokens_mistral': 1362, 'n_tokens_neox': 1494, 'n_words': 320}